背景:
之前编写了一些脚本,下载了一些开源软件,想把它们做成系统服务,通过 service your_prog_name start 这样的方式来后台运行,并在开机时自动启动。
在了解了 daemon 命令之后,我发现使用它来编写这样的脚本非常方便,相关示例如下:
具体配置:
只需要将 your_prog_name 替换为你真正的脚本或执行文件的名称,将 prog_path 设置为具体的路径,以及其它的部分参数如执行用户 prog_user,以及 proc_conf 与 options 等即可。
# vim /etc/init.d/your_prog_name
#!/bin/bash # # chkconfig: - 98 02 # description: Starts and stops the your_prog_name daemon. . /etc/init.d/functions prog_name="your_prog_name" prog_path="/path/to/${prog_name}" prog_user="your_prog_user" prog_conf="/path/to/your_prog_conf" pidfile="/path/to/${prog_name}.pid" options="-c ${prog_conf}" lockfile="/var/lock/subsys/${prog_name}" [ -x "${prog_path}" ] || exit 1 [ -r "${prog_conf}" ] || exit 1 start(){ echo -n $"Starting ${prog_name}: " daemon --user ${prog_user} ${prog_path} ${options} retval=$? prog_pid=$(pidof ${prog_path}) [ ! -z "${prog_pid}" ] && echo ${prog_pid} > ${pidfile} echo [ $retval -eq 0 ] && touch ${lockfile} return $retval } stop(){ echo -n $"Stopping ${prog_name}: " killproc -p ${pidfile} ${prog_name} retval=$? echo [ $retval -eq 0 ] && rm -f ${lockfile} return $retval } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; status) status -p ${pidfile} ${prog_name} ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 2 esac exit $?
# chmod +x /etc/init.d/your_prog_name
# chkconfig your_prog_name on