【发布时间】:2015-05-19 21:23:50
【问题描述】:
我正在尝试使用来自here 的一些输入来修改这个example,因为我只想停止作为守护进程运行的特定 Python 应用程序,因为在 Python 上运行的同一台服务器上也会有其他应用程序,所以不要'不想杀死所有 python 脚本...
服务器运行我认为是 CentOS 的 Amazon Linux。
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 符号 | -sigspec] pid | jobspec ... 或 kill -l [sigspec]
如果我从 shell 运行命令来获取 pid,它可以工作:
ps -ef | grep '[p]ython /usr/local/sbin/app1/app.py' | awk '{ print $2 }'
我得到了 processid,所以我错过了什么......?
提前非常感谢!
【问题讨论】:
-
大概
echo $pid正在打印一个空白......