- 论坛徽章:
- 0
|
How to get pid with last process in background?
给你一个现成的,把文件名改成你的服务名,再把CMD变量改成你的启动命令,最后把MATCHLEN改成命令行的适当长度(不超过80)就ok了
- #!/bin/sh
-
- # Startup Agent [statup_module.sh].
- # YUHONG 2002-07-09
-
- # !!! Warning !!!
- # modify filename to your services name
- # modify CMD to your command line.
-
- CMD="/usr/local/bin/tcpserver -R -H 0 cvspserver /usr/bin/cvs -f --allow-root=/var/cvsroot pserver"
- MATCHLEN=40
-
- PROC_NAME=`basename $0 .sh`
- PIDFILE="/var/run/${PROC_NAME}.pid"
-
- ifrun(){
- if [ -f "$PIDFILE" ];then
- PID=`cat $PIDFILE`
- if [ -n "$PID" ];then
- pscmd=`ps -o command -p $PID|sed -n 2p`
- if [ -n "$pscmd" ];then
- d=`expr "$CMD" : "$pscmd"`
- if [ $d -gt $MATCHLEN ];then
- return 0;
- fi
- fi
- fi
- fi
- return 1;
- }
- case "$1"
- in
- start)
- ifrun && { echo "Another $PROC_NAME already running."; exit 1;}
- $CMD &
- :
- echo $! > $PIDFILE
- echo -n " $PROC_NAME"
- ;;
- status)
- if ifrun;then
- echo "$PROC_NAME STATUS: RUNNING"
- echo "COMMAND: $CMD"
- echo "PIDFILE: $PIDFILE"
- echo "PID: `cat $PIDFILE`"
- else
- echo "$PROC_NAME STATUS: STOPED"; exit 1
- fi
- ;;
- stop)
- ifrun || { echo "$PROC_NAME not running.";exit 1;}
- /bin/kill -KILL `cat $PIDFILE` 2>/dev/null
- rm -rf $PIDFILE
- echo "$PROC_NAME stoped"
- ;;
- *)
- echo "`basename $0` status|start|stop"
- ;;
- esac
- exit 0
复制代码 |
|