簡體   English   中英

ubuntu bash腳本未運行

[英]ubuntu bash script not running

以下是我的腳本,該腳本旨在檢查“ 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

if [ $? -eq 0 ]; then 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 ]

謝謝大家的幫助和友好的合作。

有評論建議,我做了些小改動,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM