2015-07-12 200 views
2

我試圖在重新啓動時運行一個簡單的.sh腳本。我想讓這個腳本永遠運行。我在/home/user/folder/script.sh的用戶目錄中的一個文件夾中有這個腳本。它運行在一個簡單的vps上,我可以通過ssh訪問。如果我在./script.sh &中運行它,而我處於同一個目錄中,它可以很好地工作。當我關閉ssh連接時,它停止。在重新啓動時運行.sh腳本並保持運行

我試着添加一個像這樣的crontab條目:@reboot /home/user/folder/script.sh &(正如其他答案中的建議),然後只是鍵入sudo reboot,但它不起作用。

我不知道哪一個是這個問題的最佳解決方案。該script.sh是這一個(我發現它,而尋找一些解決辦法,如果它崩潰重啓蟒蛇start.py):

until ./start.py; do 
    echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2 
    sleep 1 
done 

而且它正是我需要的。

謝謝你的幫助!

+1

您應該查看流程主管。有些工具可以正確完成這項工作,它們不是shell腳本循環的黑客。 –

+2

看看這篇文章 - http://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root。它在接受的答案中提到了幾個「@reboot」陷阱。 – matthewatabet

+0

忘記shell腳本和cronjobs,它們同樣吸吮你正在嘗試做的事情。在Linux下,init/upstart是使服務器進程延續機器正常運行時間的方式。例如,查看/ etc/init和/etc/init.d中的條目。 – msw

回答

2

當您關閉ssh連接時,腳本會收到掛斷信號並退出。

nohup ./script.sh & 

腳本將繼續運行在關閉連接後:如果你開始這樣的腳本可以忽略使用nohup掛機信號。