ubuntu bash脚本未运行

时间:2018-07-31 04:14:36

标签: bash ubuntu

下面是我的脚本,该脚本旨在检查“ python3.6”进程是否正在运行。

如果未运行,则执行python代码,否则退出0。

在此bash脚本中我没有看到任何python的活动或进程运行。

请帮助我了解我是否编写了错误的脚本。

非常感谢您的帮助。

预先感谢。

#!/bin/bash

ps x |grep -v grep |grep -c "python3.6" 
if [ $? -eq 0 ]; then
bash -c "/home/ubuntu/anaconda3/bin/python3.6 /var/lib/pythoncode/main_progm.py >> /home/ubuntu/Logs.txt"
fi

# End of Script

2 个答案:

答案 0 :(得分:2)

if [ $? -eq 0 ]; then的意思是“如果最后一个命令没有错误退出”。 grep在找不到内容时返回错误结果;因此,您的if说:“如果找到了Python进程,请运行另一个Python进程,否则不要紧”。因此,您的代码找不到Python进程,因此也就永远不会启动它(错误地认为孤独的生活根本就没有生命)。

您可以通过多种方式进行更改。您可以将-eq更改为-ne

否则,您甚至不需要显式比较退出代码,因为if就是这样做的。您可以这样写:

if ps x | grep -v grep | grep -c python3.6
then
  # grep found stuff and exited with $? == 0
  echo Oops, still running
else
  # grep failed and exited with $? != 0
  echo Good to go, run it
fi

或者您可以使用产生的计数:

pythoncount=$(ps x |grep -v grep |grep -c "python3.6")
if [ $pythoncount -eq 0 ]

答案 1 :(得分:0)

谢谢大家的帮助和友好合作。

有评论建议,我做了些小改动,bash运行正常。

下面是代码,我希望它可以帮助某人进入类似的情况。

再次感谢您。

#!/bin/bash

ps -x |grep -v grep |grep -c "python3.6" >/dev/null
if [ $? -ne 0 ]; then
bash -c "/home/ubuntu/anaconda3/bin/python3.6 /var/lib/pythoncode/main_progm.py >> /home/ubuntu/Logs.txt"
else
exit 0;
fi