对于守护进程管理、自动重启、记录log,有一个很好用的进程管理工具 supervisord 。它可以说简单易用,且功能强大。但是对于我的部署需求来说还是过于繁琐,且没有搞定用它如何记录进程状态。
今天写了一个简单的shell脚本,以满足我的所有需求,并且部署简单。
希望能够给有同样需求的码农们提供一个参考。
pgmctl.sh
#!/bin/bash
#run: /pathto/pgmctl.sh [start &|stop|restart &]
#author: color_wind
# shell dir name
PAT=`dirname $0`
# set parameters
CMD="$PAT/pgmctl"
LOG="$PAT/logs/pgmctl.log"
PID="$PAT/logs/.pgmctl.PID"
CFG="$PAT/conf/px.cfg"
#set ulimit
ULM="102400"
# ---------------------------------------------------
# edit these function as your needs
function start {
ulimit -n $ULM
$CMD -f $CFG >> $LOG 2>&1 &
tpid=$!
echo $tpid > $PID
echo "start [ok]"
}
function stop {
kill `