知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
無論是C語言還是php/python/perl 通過fork命令實現守護進程,讓當前程序進入後台運行,這種手段常常用於伺服器軟件。
啟用 shell 解決重複運行問題,記錄PID以便可以停止Shell運維
#!/bin/bash ############################################## # $Id$ # Author: Neo <netiller@msn.com> # Home : http://netkiler.github.io # Project: https://github.com/oscm/shell ############################################## NAME=info BASEDIR='/www' PROG=$BASEDIR/bin/$(basename $0) LOGFILE=/var/tmp/$NAME.log PIDFILE=/var/tmp/$NAME.pid ############################################## PHP=/usr/local/webserver/php/bin/php ############################################## #echo $$ #echo $BASHPID function start(){ if [ -f "$PIDFILE" ]; then echo $PIDFILE exit 2 fi for (( ; ; )) do cd $BASEDIR/crontab/ $PHP readfile.php > $LOGFILE $PHP chart_gold_silver_xml.php > /dev/null sleep 60 done & echo $! > $PIDFILE } function stop(){ [ -f $PIDFILE ] && kill `cat $PIDFILE` && rm -rf $PIDFILE } case "$1" in start) start ;; stop) stop ;; status) ps ax | grep chart.xml | grep -v grep | grep -v status ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 2 esac exit $?