背景:
之前编写了一些脚本,下载了一些开源软件,想把它们做成系统服务,通过service your_prog_name start这样的方式来后台运行,并在开机时自动启动。
在了解了daemon命令之后,我发现使用它来编写这样的脚本非常方便,相关示例如下:
具体配置:
只需要将your_prog_name替换为你真正的脚本或执行文件的名称,将prog_path设置为具体的路径即可。
# vim /etc/init.d/your_prog_name
#!/bin/bash
#
# Comments to support chkconfig
# chkconfig: - 98 02
# description: your_prog_name service script
#
# Source function library.
. /etc/init.d/functions
### Default variables
prog_name="your_prog_name"
prog_path="/usr/bin/${prog_name}"
pidfile="/var/run/${prog_name}.pid"
options="-c your_conf_file"
# Check if requirements are met
[ -x "${prog_path}" ] || exit 1
RETVAL=0
start(){
echo -n $"Starting $prog_name: "
daemon $prog_path $options
RETVAL=$?
PID=$(pidof ${prog_path})
[ ! -z "${PID}" ] && echo ${PID} > ${pidfile}
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog_name
return $RETVAL
}
stop(){
echo -n $"Shutting down $prog_name: "
killproc -p ${pidfile}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog_name
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status $prog_path
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
RETVAL=1
esac
exit $RETVAL
# chmod +x /etc/init.d/your_prog_name
# chkconfig your_prog_name on
转自:http://ju.outofmemory.cn/entry/95057
附加service tomcat1 start例子:
#!/bin/sh
#
# chkconfig: 2345 85 21
# description: zimg startup scripts
#
tomcat="/usr/server/tomcat1"
startup="/usr/server/tomcat1/bin/startup.sh"
shutdown="/usr/server/tomcat1/bin/shutdown.sh"
export JAVA_HOME=/usr/local/jdk1.7.0
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
fi
start() {
cd $tomcat
$startup
echo "tomcat1 started."
}
stop() {
cd $tomcat
$shutdown
echo "tomcat1 stopped."
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
;;
restart)
stop
start
;;
condrestart)
;;
reload)
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
;;
esac
exit $RETVAL
~
~
~
~