修改蟒蛇守护程序脚本,停止不工作(modifying python daemon script, s

2019-10-23 03:46发布

我试图修改此例如使用一些投入在这里 ,我想只停止特定Python应用程序作为守护程序运行,因为会有其他人也对Python的运行在同一台服务器上,以便不想杀死所有的Python脚本...

该服务器运行Linux的亚马逊,我认为这是CentOS的。

USER="root"
APPNAME="myPythonApp1"
APPBIN="/usr/bin/python"
APPARGS="/usr/local/sbin/app1/app.py"
LOGFILE="/var/log/$APPNAME/error.log"
LOCKFILE="/var/lock/subsys/$APPNAME"

LOGPATH=$(dirname $LOGFILE)

prog=$APPBIN

start() {
        [ -x $prog ] || exit 5
        [ -d $LOGPATH ] || mkdir $LOGPATH
        [ -f $LOGFILE ] || touch $LOGFILE

        echo -n $"Starting $APPNAME: "
        daemon --user=$USER "$APPBIN $APPARGS >>$LOGFILE &"
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $LOCKFILE
        return $RETVAL
}

stop() {
        echo -n $"Stopping $APPNAME: "
        pid=`ps -ef | grep '[p]ython $APPARGS' | awk '{ print $2 }'`
        echo $pid
        kill $pid
        sleep 1
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $LOCKFILE
        return $RETVAL
}

开始工作正常,没有问题。 当我试图阻止我得到一个错误:

杀:用法:杀死[-s SIGSPEC | -n正负号| -sigspec]的pid | JOBSPEC ......或者杀死-l [SIGSPEC]

如果我从shell运行命令获取PID,它的工作原理:

ps -ef | grep '[p]ython /usr/local/sbin/app1/app.py' | awk '{ print $2 }'

我得到的ProcessID所以我失去了什么......?

提前谢谢了!

Answer 1:

您正在使用您的grep的表达单引号:

grep '[p]ython $APPARGS'

在单引号,变量将不会被扩大。 你应该用双引号:

grep "[p]ython $APPARGS"


文章来源: modifying python daemon script, stop does not work