有時候會往叢集山發送一個運作時間很長的作業,但是有可能因為使用者登出的原因或者網絡斷開的原因導緻運作的作業終止。這是因為,這些事件發生的時候,系統會收到HUP(hangup)信号,然後将使用者的所有程序都終止掉。
為了保證作業可靠的運作,有三種簡單的方法:一種使用setsid指令,另外一種是使用nohup,還有就是使用(&)
nohup使送出的程序忽略系統發送的HUP信号,用法就是在正常的指令前面加上nohup 就可以了。
還有一種方法是讓程序或者作業在一個新的會話中進行,使用setsid就達到這個目的了。使用方法和nohup相同,也是在啟動作業的指令前面加上setsid即可。這時啟動的程序的父程序為init程序,是以即使使用者登出或者網絡中斷,也不會給此程序發送HUP信号。
使用(&)的效果和setsid的效果相同,使用方法為( 啟動作業的指令 &)。也将在一個新的會話中啟動程序。父程序為init程序,不會收到使用者登出或者網絡中斷的任何影響。
本文轉自hipercomer 51CTO部落格,原文連結:http://blog.51cto.com/hipercomer/895311