用于python脚本的shell启动/停止
我有一个简单的python脚本" title="python脚本">python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来执行此操作。
我有start.sh:
#!/bin/shscript='/path/to/my/script.py'
echo 'starting $script with nohup'
nohup /usr/bin/python $script &
和stop.sh
#!/bin/shPID=$(ps aux | grep "/path/to/my/script.py" | awk '{print $2}')
echo "killing $PID"
kill -15 $PID
我主要关注stop.sh脚本。我 认为
这是找到pid的适当方法,但我对此并不敢多说。start.sh成功启动它。当我运行stop.sh时,我无法再通过"ps aux | grep
'myscript.py'"控制台找到该进程,但输出如下:
killing 2505225058
./stop.sh: 5: kill: No such process
因此似乎可以正常工作,并显示“没有这样的过程”的错误提示。
这实际上是错误吗?我是否以一种理智的方式来处理这个问题?还有其他我应该注意的事情吗?
-我实际上最终得到了这样的东西:start.sh
#!/bin/bashENVT=$1
COMPONENTS=$2
TARGETS=("/home/user/project/modules/script1.py" "/home/user/project/modules/script2.py")
for target in "${TARGETS[@]}"
do
PID=$(ps aux | grep -v grep | grep $target | awk '{print $2}')
echo $PID
if [[ -z "$PID" ]]
then
echo "starting $target with nohup for env't: $ENVT"
nohup python $target $ENVT $COMPONENTS &
fi
done
停止
#!/bin/bashENVT=$1
TARGETS=("/home/user/project/modules/script1.py" "/home/user/project/modules/script2.py")
for target in "${TARGETS[@]}"
do
pkill -f $target
echo "killing process $target"
done
回答:
这是因为ps aux |grep SOMETHING
还找到了grep
SOMETHING进程,因为SOMETHING匹配。执行完grep后,因此找不到它。
添加一行: ps aux | grep -v grep | grep YOURSCRIPT
其中-v表示排除。更多内容man grep
。
以上是 用于python脚本的shell启动/停止 的全部内容, 来源链接: utcz.com/qa/397791.html