當我們使用SSH遠端登入Linux執行程式又不想登出後程式不能繼續執行,就是我們使用nohup的時機!
nohup是由兩個字組成的命令:no-hup,hup指的是SIGHUP(hangup)這個信號,nohup就是忽略SIGHUP這個信號的意思。當我們從一個連線登出的時候,每個process都會收到一個SIGHUP信號,透過nohup所下達的命令就可以不受影響,繼續執行。
Example 1:
$ nohup abcd &
$ exit
說明:背景執行abcd這個程式.第二行執行exit登出系統後, abcd這個程式會繼續在背景執行直到完成
Example 2: (當我們想保留程式的輸出訊息時)
$ nohup ./myprogram > foo.out 2> foo.err < /dev/null &
這個範例代表
1.將myprogram的標準輸出輸出到foo.out
2.將標準錯誤輸出(2)輸出到foo.err
3.輸入為EOF
4.背景執行這個指令
Note : /dev/null:在類Unix系統中,/dev/null,或稱空裝置,是一個特殊的裝置檔案,它丟棄一切寫入其中的資料(但報告寫入操作成功),讀取它則會立即得到一個EOF[1]
Reference :