sighup訊號
sighup 訊號在使用者終端連線(正常或非正常)結束時發出, 通常是在終端的控制程序結束時, 通知同一session內的各個作業, 這時它們與控制終端不再關聯. 系統對sighup訊號的預設處理是終止收到該訊號的程序。所以若程式中沒有捕捉該訊號,當收到該訊號時,程序就會退出。
sighup會在以下3種情況下被傳送給相應的程序:
終端關閉時,該訊號被傳送到session首程序以及作為job提交的程序(即用 & 符號提交的程序);
session首程序退出時,該訊號被傳送到該session中的前台程序組中的每乙個程序;
若父程序退出導致程序組成為孤兒程序組,且該程序組中有程序處於停止狀態(收到sigstop或sigtstp訊號),該訊號會被傳送到該程序組中的每乙個程序。
例如:在我們登入linux時,系統會分配給登入使用者乙個終端(session)。在這個終端執行的所有程式,包括前台程序組和後台程序組,一般都屬於這個 session。當使用者退出linux登入時,前台程序組和後台有對終端輸出的程序將會收到sighup訊號。這個訊號的預設操作為終止程序,因此前台進 程組和後台有終端輸出的程序就會中止。
nohup命令簡介
nohup 的作用可以將程式以忽略掛起訊號(sighup)的方式執行。常見的用法是和 & 命令一同使用,將命令放置到後台執行,即使終端掛掉,程序會忽略掛起訊號,繼續執行。
將程式放到後台執行,一般有兩種方式:
1,command &
:後台執行,關掉終端有可能會停止執行。
2,nohup command &
:後台執行,關掉終端也會繼續執行。
注意:1,如果使用nohup執行程式未顯示進行標準輸出重定向,則標準輸出預設重定向當前工作目錄的 nohup.out 檔案中。如果當前工作目錄的 nohup.out 檔案不可寫,輸出重定向到$home/nohup.out
檔案中。如果沒有檔案能建立或開啟用於追加,那麼 command 引數指定的命令不可呼叫。
2,如果標準錯誤未顯示重定向,那麼標準錯誤預設重定向到與標準輸出相同的檔案。
命令格式
nohup command [args]
nohup option
3選項說明
--help
顯示幫助資訊並退出
--version
顯示版本資訊並退出
常用示例
1,使用 nohup 命令提交作業,那麼在預設情況下該作業的所有輸出都被重定向到乙個名為nohup.out的檔案中,除非另外指定了輸出檔案。
nohup ./test.sh &
2,標準輸出與標準錯誤輸出重定向。
nohup ./test.sh > test.log 2>&1 &
3,指定輸出檔案, 輸出被重定向到output.txt檔案中
nohup bash a.sh &> error.txt
注意:1,2>&1
標識標準錯誤輸出重定向等同於標準輸出重定向,即標準錯誤輸出也重定向到檔案test.log;
2,&
命令是命令放在後台執行,需要放在命令的最後面。
linux下trap命令和SIGHUP訊號量詳解
trap命令用於指定在接收到訊號後將要採取的動作。常見的用途是在指令碼程式被中斷時完成清理工作。我在寫自動公升級指令碼的時候,為防止指令碼執行期間是不能允許其使用ctrl c等中斷退出的,故使用了trap命令。一 關於訊號 歷史上,shell總是用數字來代表訊號,而新de指令碼程式應該使用訊號de名...
SIGHUP訊號與控制終端
sighup 訊號與控制終端 unix中程序組織結構為session 會話 包含乙個前台程序組及乙個或多個後台程序組,乙個程序組包含多個程序。乙個session可能會有乙個session首程序,而乙個session首程序可能會有乙個控制終端。乙個程序組可能會有乙個程序組首程序。程序組首程序的程序id...
SIGHUP訊號與控制終端
size large sighup訊號與控制終端 unix中程序組織結構為 session 會話 包含乙個前台程序組及乙個或多個後台程序組,乙個程序組包含多個程序。乙個session可能會有乙個session首程序,而乙個session首程序可能會有乙個控制終端。乙個程序組可能會有乙個程序組首程序。...