| 知乎專欄 | 多維度架構 | 微信號 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 $?