對不起noob問題。我正在我的網絡服務器上運行一個shell腳本來下載900個左右的文件。不過,我正通過筆記本電腦上的終端外殼進行此操作,並且我即將失去當前的Internet連接。如果您丟失了Internet連接,在服務器上運行的命令會發生什麼情況?
服務器上的腳本是否繼續運行直到完成?或者它停止了,因爲它不再提供反饋給斷開筆記本電腦上的終端。
對不起noob問題。我正在我的網絡服務器上運行一個shell腳本來下載900個左右的文件。不過,我正通過筆記本電腦上的終端外殼進行此操作,並且我即將失去當前的Internet連接。如果您丟失了Internet連接,在服務器上運行的命令會發生什麼情況?
服務器上的腳本是否繼續運行直到完成?或者它停止了,因爲它不再提供反饋給斷開筆記本電腦上的終端。
它會因爲父進程(終端)已經死亡而死亡。然而,使用工具如screen
或nohup
(等等)有可能有進程繼續即使終端死了,你甚至可以後臺進程及其已經運行後,不信這一套,see this Q for more there.
Further reading you may want to peruse, there's a ton out there on this subject.
默認情況下,Web服務器上的交互式shell會在腳本終止後立即發送HUP
信號。你可以通過調用腳本這樣防止這種情況:
<scriptname> & disown
這樣,它會在後臺(&
)來運行,並從外殼的作業列表(disown
)去掉,這樣殼就不會向它發送HUP
信號。
請注意,disown
可能不是必需的in some cases。