修改python守护程序脚本时,停止不起作用

修改python守护程序脚本时,停止不起作用,python,linux,shell,daemon,Python,Linux,Shell,Daemon,我正试图使用来自的一些输入来修改它,因为我只想停止作为守护进程运行的特定Python应用程序,因为在Python上运行的同一服务器上也会有其他应用程序,所以不想杀死所有Python脚本 服务器运行的是Amazon Linux,我相信是CentOS USER="root" APPNAME="myPythonApp1" APPBIN="/usr/bin/python" APPARGS="/usr/local/sbin/app1/app.py" LOGFILE="/var/log/$APPNAME/e

我正试图使用来自的一些输入来修改它,因为我只想停止作为守护进程运行的特定Python应用程序,因为在Python上运行的同一服务器上也会有其他应用程序,所以不想杀死所有Python脚本

服务器运行的是Amazon 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
}
启动工作正常,没有问题。当我尝试停止时,我得到一个错误:

kill:用法:kill[-s sigspec |-n signum |-sigspec]pid | jobspec。。。或者杀死-l[sigspec]

如果我从shell运行命令以获取pid,它将起作用:

ps -ef | grep '[p]ython /usr/local/sbin/app1/app.py' | awk '{ print $2 }'
我得到了进程ID,那么我遗漏了什么


非常感谢

在grep表达式中使用单引号:

grep '[p]ython $APPARGS'
在单引号中,变量不会展开。您应该使用双引号:

grep "[p]ython $APPARGS"

大概是
echo$pid
正在打印一张空白纸……谢谢@robert!如果我可以的话,请继续提问。。。当我停下来时,我不会像开始时那样得到批准。。。这是因为python脚本吗?嗯……这可能与
$RETVAL
的值有关吗?如果有意愿,这可能会有帮助……有办法做到。。。详情请参见我的后续帖子: