#!/bin/bash
#
# chkconfig:
# description: my_SERVICE_NAME is a my Service
# # common function
. /etc/init.d/functions # service bash flag
IVMS_SERVICE= CORE_DUMP_DIR=/var/my_core
DAEMON_COREFILE_LIMIT=unlimited
SVC_SYS_DIR=/etc/init.d SVC_PROG=my_SERVICE_PROG
SVC_NAME=my_SERVICE_NAME
SVC_DIR=my_SERVICE_DIR
SVC_LOCK_FILE=/var/lock/subsys/$SVC_PROG
SVC_PID_FILE=/var/run/$SVC_NAME.pid # install service, $ service name, $ executable name
InstallSvc()
{
if [ -z "$1" ]; then
echo $"service name is needed by myservice."
return -
fi SVC_NAME=$
SVC_PROG=${:-$SVC_NAME}
SVC_DIR=`pwd`
SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME if [ ! -f $SVC_DIR/$SVC_PROG ]; then
echo $"$SVC_DIR/$SVC_PROG does not exist."
return -
fi echo $"installing $SVC_NAME service, executable file $SVC_DIR/$SVC_PROG ..." # set suid_dumpable on
if [ -e /proc/sys/kernel/suid_dumpable ]; then
echo > /proc/sys/kernel/suid_dumpable
else
echo > /proc/sys/fs/suid_dumpable
fi # create core directory
if [ -d $CORE_DUMP_DIR ]; then
echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
else
mkdir $CORE_DUMP_DIR
echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
fi # config sysctl to enable core
grep "$CORE_DUMP_DIR/core-%e-%p-%t" /etc/sysctl.conf
if [ $? -ne ]; then
echo $"fs.suid_dumpable = 1" >> /etc/sysctl.conf
echo $"kernel.core_pattern = $CORE_DUMP_DIR/core-%e-%p-%t" >> /etc/sysctl.conf
fi # create service bash
sed -e "s%my_SERVICE=0%my_SERVICE=1%g" $ | \
sed -e "s%my_SERVICE_PROG%$SVC_PROG%g" | \
sed -e "s%my_SERVICE_NAME%$SVC_NAME%g" | \
sed -e "s%my_SERVICE_DIR%$SVC_DIR%g" > $SVC_SYS_FILE chmod u+x $SVC_SYS_FILE
chmod u+x $SVC_DIR/$SVC_PROG
chkconfig --add $SVC_NAME echo $"install $SVC_NAME service successfully."
return
} # uninstall service, $ service name
UninstallSvc()
{
if [ -z "$1" ]; then
echo $"service name is needed by myservice."
return -
fi SVC_NAME=$
SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME echo $"uninstalling $SVC_NAME service ..." # rm service bash
if [ -f $SVC_SYS_FILE ]; then
chkconfig --del $SVC_NAME
rm -f $SVC_SYS_FILE
else
warning $"$SVC_NAME service does not exist."
fi echo $"uninstall $SVC_NAME service successfully."
return
} # start service
StartSvc()
{
echo $"starting $SVC_NAME service ..." # set core unlimited, replaced by DAEMON_COREFILE_LIMIT
#ulimit -c unlimited # create lockfile, run program
touch $SVC_LOCK_FILE
cd $SVC_DIR
daemon --pidfile=$SVC_PID_FILE $SVC_DIR/$SVC_PROG -service
if [ $? -eq ]; then
# created by the program
#pidof $SVC_DIR/$SVC_PROG > $SVC_PID_FILE
echo $"start $SVC_NAME service successfully."
return
else
echo $"start $SVC_NAME service failure."
return -
fi
} # get service status
IsSvcRunning()
{
local pid
__pids_var_run $SVC_NAME $SVC_PID_FILE
[ -n "$pid" ] && return || return
} # stop service
StopSvc()
{
echo $"stopping $SVC_NAME service ..." # remove lockfile
rm -f $SVC_LOCK_FILE # wait for exit
local i RC
for (( i = ; i < ; i++ )); do
if IsSvcRunning; then
sleep
else
break
fi
done if [ $i -eq ] && IsSvcRunning; then
killproc -p $SVC_PID_FILE $SVC_NAME
RC=$?
else
rm -f $SVC_PID_FILE
RC=
fi if [ $RC -eq ]; then
echo $"stop $SVC_NAME service successfully."
return
else
echo $"stop $SVC_NAME service failure."
return -
fi
} # restart service
RestartSvc()
{
echo $"restarting $SVC_NAME service ..." StopSvc
if [ $? -eq ]; then
StartSvc
if [ $? -eq ]; then
echo $"restart $SVC_NAME service successfully."
return
fi
fi echo $"restart $SVC_NAME service failure."
return -
} RETVAL= if [ $IVMS_SERVICE -eq ]; then
# setup
case $ in
install | i)
InstallSvc $ $
RETVAL=$?
;;
uninstall | u)
UninstallSvc $
RETVAL=$?
;;
*)
echo $"Usage: $0 {i, install NAME [EXEC] | u, uninstall NAME}"
;;
esac
else
# service
case $ in
start | r)
StartSvc
RETVAL=$?
;;
stop | p)
StopSvc
RETVAL=$?
;;
restart | e)
RestartSvc
RETVAL=$?
;;
status | s)
status -p $SVC_PID_FILE $SVC_NAME
RETVAL=$?
;;
status2)
IsSvcRunning && echo $"$SVC_NAME service is running." || echo $"$SVC_NAME service has been stopped."
;;
*)
echo $$"Usage: $0 {start|stop|status|restart}"
;;
esac
fi exit $RETVAL

linux 服务脚本的更多相关文章

  1. linux服务脚本编写

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. linux服务脚本

    #!/bin/sh ARG=$1 case $ARG in start): nohup /path/program & ;; stop): pkill program ;; restart): ...

  3. 第11章 Linux服务管理

    1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...

  4. 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service

    在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...

  5. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  6. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  7. Linux学习笔记(19) Linux服务管理

    1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...

  8. [Linux]服务管理:rpm包, 源码包

    --------------------------------------------------------------------------------------------------- ...

  9. linux服务开机启动顺序

    今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...

随机推荐

  1. bzoj1951

    CRT+LUCAS+费马小定理+拓展欧拉定理 幂指数太大了怎么办?欧拉定理,n太大了怎么办?上lucas,模数太大了怎么办?上crt.然后就好了,唯一注意的是要用拓展欧拉定理,n%phi(p)+phi ...

  2. 【WIP】gollum

    创建: 2018/03/18 [任务表]TODO 这个博客从来不点发布到首页, 完全100%自用, 全部详细完整的干货.千辛万苦找到这里看到一片空白, 是不是很愤怒? 那就对啦233333

  3. 爬虫—Requests高级用法

    Requests高级用法 1.文件上传 我们知道requests可以模拟提交一些数据.假如有的网站需要上传文件,我们也可以用requests来实现. import requests files = { ...

  4. ROS学习笔记一:ROS安装与测试

    1 Ubuntu和ROS版本的对应关系 Ubuntu 和 ROS 都存在不同的版本,其对应关系如下: 注:如果Ubuntu版本和ROS版本不对应的话,安装就不会成功了- 笔者安装的是Ubuntu14. ...

  5. _bzoj1009 [HNOI2008]GT考试【矩阵加速dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1009 比较不错的一道题,令f(i, j)表示考号匹配到i位,后j位为不吉利串的前j位,那么对 ...

  6. 计算机视觉-SIFT特征匹配进行目标转换

    Lowe将SIFT算法分解为如下四步: 1. 尺度空间极值检测:搜索所有尺度上的图像位置.通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点. 关键点定位:在每个候选的位置上,通过一个拟合精细的模 ...

  7. linux下的c程序排版工具:indent 分类: linux 2014-06-14 20:05 720人阅读 评论(0) 收藏

    Linux下有一个方便的c语言程序排版工具,只要选择恰当的参数,可以轻易地使自己的程序具有统一的风格. 当然首先要安装indent,执行命令:apt-get install indent indent ...

  8. 对数组随机赋值,并输出(Arrays.toString(arr))

    import java.util.Arrays; public class Demo { public static void main(String[] args) { int[] arr = ne ...

  9. java之java.sql.SQLException: ResultSet is from UPDATE. No Data.

    问题解释:java调用存储过程的时候,查询结果不能通过ResultSet来查询,需要通过CallableStatement来查询, 比如: ResultSet rs = callableStateme ...

  10. 自学 iOS - 三十天三十个 Swift 项目 第二天

    继续做仿造着别人的第二个 1.首先下载 一些字体 网上搜索 "造字工房" 2.把下载的相应字体文件放到工程之中,就Ok了 不多说 效果如下 可以下面这个方法 检索项目里面所有的字体 ...