2013-08-20 47 views
0

我試圖在bash腳本運行幾個命令,但它會掛在我的命令,等待它完成(它不會)退出。這個腳本只是確保它的運行。運行命令,然後而不殺死命令

#!/bin/bash 
ps cax | grep python > /dev/null 
if [ $? -eq 0 ]; then 
    echo "Process is running." 
else 
    echo "Process is not running... Starting..." 
    python likebot.py 
    echo $(ps aux | grep python | grep -v color | awk {'print $2'}) 
fi 

一旦它到達python命令,它會在命令執行時掛起。它沒有,直到我ctrlct c之前,它給出了PID。有反正我可以有它運行此bash腳本,一旦命令被執行退出bash腳本(無需等待他們來完成)。

+1

用途及命令 –

+0

後,你有沒有嘗試'&'運營商了嗎? – EverythingRightPlace

+0

你或許應該在http://codereview.stackexchange.com提交此。反饋可能會教你很多關於shell編程的知識。 –

回答

6

一般來說,如果你想執行一個命令而不是等待它,你可以簡單地使用&作爲分隔符而不是;或換行符。這樣做時,該進程的PID是提供給特殊變量!殼。如果您想等待該過程完成,則可以使用wait。如果你不希望等待,然後簡單地忽略wait。你的情況:

python likebot.py & # Start command asynchronously 
echo $!    # echo the pid of the most recent asynchronous process 
1

因爲它看起來像likebot應始終運行,你可能要考慮「的nohup」,以及與裸&工作依然是你的登錄過程的孩子,是否會死死亡。