nohup 命令與 SIGHUP 訊號

2021-10-14 02:08:42 字數 1586 閱讀 5147

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首程序可能會有乙個控制終端。乙個程序組可能會有乙個程序組首程序。...