nohup 指令

用途

在沒有 hangups 的情況下執行指令。

語法

諾胡普 { -p pid | 指令阿爾格 ... ] [ & ] }

說明

nohup 指令會執行 Command 參數及任何相關 Arg 參數所指定的指令,忽略所有掛斷信號 (SIGHUP) 或修改使用 -p 選項指定的處理程序以忽略所有 SIGHUP 信號。 SIGHUP 是在處理程序的控制端關閉時傳送給處理程序的信號。

在登出之後,也可以使用 nohup 指令在背景中執行程式。 To run a nohup command in the background, add an & (ampersand) to the end of the command.

如果標準誤顯示在終端機上,且標準輸出既未顯示在終端機上,也未傳送至使用者指定的輸出檔 (預設輸出檔為 nohup.out) ,則不會建立或開啟 ./nohup.out$HOME/nohup.out 檔案來附加錯誤訊息。 nohup 指令不會執行以 nohup 指令指定的參數公用程式,並以結束狀態 127 結束。
附註: 不能同時指定 -p pid指令 選項。
當使用-p pid 旗標時,指定處理程序的輸出將不會重新導向至 nohup.out 檔案。

旗標

項目 說明
-p pid pid 是執行中處理程序的處理程序 ID。 nohup 指令會修改指定的處理程序,以忽略所有斷線 (SIGHUP) 信號。

結束狀態

這個指令會傳回下列結束值:

項目 說明
126 找到 Command 參數指定的指令,但無法呼叫。
127 nohup 指令中發生錯誤,或找不到 指令 參數指定的指令。

否則, nohup 指令的結束狀態是由 指令 參數指定之指令的結束狀態。

範例

  1. 若要在登出之後於背景中執行指令,請輸入:
    $ nohup find / -print &
    在您輸入這個指令之後,會顯示下列:
    670
    $ Sending output to nohup.out
    The process ID number changes to that of the background process started by & (ampersand). 該訊息Sending output to nohup.out通知您 find/-print 指令的輸出位於 nohup.out 檔案中。 您可以在看到這些訊息之後登出,即使 find 指令仍在執行中。
  2. 若要在背景中執行指令,並將標準輸出重新導向至不同的檔案,請輸入:
    $ nohup find / -print >filenames &
    此範例會執行 find/-print 指令,並將其輸出儲存在名為filenames. 現在只會顯示程序 ID 和提示:
    677
    $
    在登出之前等待,因為nohup 指令需要一些時間來啟動 指令 參數所指定的指令。 如果您太快登出,則 指令 參數指定的指令可能根本不會執行。 一旦 Command 參數指定的指令啟動,登出並不會影響它。
  3. 若要執行多個指令,請使用 Shell 程序。 例如,如果您撰寫 Shell 程序:
    neqn math1 | nroff > fmath1
    並將它命名為 nnfmath1檔案,您可以針對下列項目中的所有指令執行 nohup 指令:nnfmath1具有下列指令的檔案:
    nohup sh nnfmath1
  4. 如果您將執行權指派給nnfmath1檔案,您可以發出下列指令來取得相同的結果:
    nohup nnfmath1
  5. 若要執行nnfmath1file in the background , enter:
    nohup nnfmath1  
    &
  6. 若要執行nnfmath1檔案,請輸入:
    nohup ksh nnfmath1
  7. 若要讓執行中處理程序忽略所有掛斷信號,請輸入:
    nohup -p 161792