shell启动/停止python脚本
发布时间:2020-12-15 18:58:17 所属栏目:安全 来源:网络整理
导读:我有一个简单的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
我有一个简单的python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来完成它.
我有start.sh: #!/bin/sh script='/path/to/my/script.py' echo 'starting $script with nohup' nohup /usr/bin/python $script & 和stop.sh #!/bin/sh PID=$(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 25052 25058 ./stop.sh: 5: kill: No such process 所以它似乎工作并给出了“没有这样的过程”的错误. 这实际上是一个错误吗?我是否以理智的方式接近这个?还有其他我应该注意的事情吗? 编辑 – 我实际上最终得到这样的东西: #!/bin/bash ENVT=$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 stop.sh #!/bin/bash ENVT=$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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |