[英]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.