shell启动/停止python脚本

前端之家收集整理的这篇文章主要介绍了shell启动/停止python脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的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

所以它似乎工作并给出了“没有这样的过程”的错误.

这实际上是一个错误吗?我是否以理智的方式接近这个?还有其他我应该注意的事情吗?

编辑 – 我实际上最终得到这样的东西:
start.sh

#!/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.

原文链接:/bash/386928.html

猜你在找的Bash相关文章