此初始化脚本应使用带有“start”参数的 nohup 启动服务。所有其他参数应按原样传递。(为方便起见,提供了重新启动。)
#!/bin/sh
# Foo Startup Script
LOGFILE="/var/log/foo/foo.log"
WORKDIR="/usr/local/foo"
nohup() {
nohup $WORKDIR/bin/foo $@ >> $LOGFILE 2>&1 &
}
other() {
$WORKDIR/bin/foo $@
}
case "$1" in
start)
nohup $@
;;
restart)
other stop
nohup start
;;
*)
other $@
exit
esac
使用“start”,脚本会进入无限循环,nohup 会分叉越来越多的进程(又名 fork 炸弹),但为什么呢?(没有输出写入日志文件。)