2012-08-29 150 views
0

我想運行一個運行python程序並在程序完成後關閉的shell腳本。這是我寫的完成任務後運行任務並關機的Shell腳本

#!/bin/bash 
python program 
sudo shutdown -h now 

這只是在不等待程序完成的情況下關閉系統。是否有不同的命令用於等待程序完成?

+4

除非程序從父節點(daemonizes)中分離,否則'shutdown'將一直運行到「program」退出。你如何驗證程序沒有完成? – jordanm

+0

向我們展示您的python程序,或告訴我們更多關於它的信息。 –

回答

2

在你的例子中你應該只有在python命令完成後纔會關閉,除非python程序早點分叉或背景。

另一種方式來運行它,將是使關機條件後的第一個命令

python command && sudo shutdown -h now 

當然,這仍然不會幫助你,如果Python程序確實喜歡分叉或daemonizing任何的成功。只需單獨運行python腳本,並注意控件是否立即返回到控制檯。

+0

我寫的python腳本是一個刮板,它用來從網上獲取幾個html頁面。我確信這個計劃是有效的。 – viper

+2

我不是說這個程序無法正常工作。我說的是,如果它守護進程或分叉,那麼它將繼續運行,但調用進程將提前返回並允許關閉發生。它完全取決於你的python程序的功能。當你自己運行它時,是否會阻塞shell直到完成? – jdi

+0

雖然他解釋說只有python腳本返回0才能關閉,但他可能想用sudo運行shutdown,而不是python命令。 – jordanm

0

你可以運行命令halt停止系統:

#!/bin/sh 
    python program 
    sudo halt 

python program首先運行,並且halt建成後會運行(你可能會測試你的Python程序的退出代碼)。如果它的行爲不像預期的那樣,試着理解爲什麼。您可以在halt之前添加logger命令,以在系統日誌中寫入內容。

相關問題