首頁 > 運維 > linux運維 > Linux中的nohup指令怎麼使用

Linux中的nohup指令怎麼使用

PHPz
發布: 2023-05-12 08:52:10
轉載
4044 人瀏覽過

nohup是什麼

nohup是Linux和Unix系統中的一個指令,其作用是在終端機退出時,讓程序在背景繼續運作。它的全稱為“no hang up”,意為“不掛起”。 nohup指令可以讓你在退出終端機或關閉SSH連線後繼續執行指令。

nohup語法規則

nohup指令的基本語法如下:

nohup COMMAND [ARGS ...] [> output-file 2> error-file] &
登入後複製

其中的參數意義如下:

  • COMMAND:需要在背景執行的命令或腳本。

  • ARGS:指令或腳本的參數。

  • > output-file:輸出重定向到指定的檔案。

  • 2> error-file:錯誤訊息重定向到指定的檔案中。

  • &:將指令放在背景執行。

nohup指令的執行過程分為以下步驟:

  • #nohup指令將目前shell的標準輸入、標準輸出和標準錯誤輸出全部重定向到/dev/null裝置中,避免被關閉終端機的訊號中斷。

  • nohup指令將行程放到後台執行,並將行程的PID輸出到終端機。

  • 進程開始執行,並將標準輸出和標準錯誤輸出重定向到指定的檔案。

  • 用戶可以退出終端機或關閉終端機窗口,進程仍然在後台運行。

nohup使用方法

使用nohup指令非常簡單,按照上面的基本語法即可。以下是一些nohup命令的用法範例:

後台運行命令

要在後台運行命令,只需要在命令列中輸入以下命令:

nohup COMMAND &
登入後複製

例如,在背景執行一個Bash腳本:

nohup bash test.sh &
登入後複製

標準輸出重定向到檔案

nohup bash test.sh > stdout.txt &
登入後複製

標準錯誤輸出重定向到檔案

nohup bash test.sh 2> stderr.txt &
登入後複製

將標準輸出和標準錯誤輸出都重定向到檔案

1. 重定向到相同檔案

nohup bash test.sh > output.txt 2>&1 &
登入後複製

2. 重定向到不同檔案

nohup bash test.sh > stdout.txt 2> stderr.txt &
登入後複製

3. 一個更複雜的例子,重定向標準輸入(stdin):

nohup ./myprogram > foo.out 2> foo.err < /dev/null &
登入後複製

這裡多出來一個< /dev/null,意思是將標準輸入重定向到/dev/null,以確保程式不會從標準輸入中讀取任何資料。

這個是為了解決一個實際問題:SSH會話常常拒絕註銷(或掛起),因為它不願意去遺失與後台job(s)進行互動的資料。當遇到這個問題的時候,可以使用上面的指令,透過三次重定向來解決。

nohup後台進程管理

使用 jobs 指令可以查看目前 shell 中後台執行的任務列表,包括任務編號、狀態和指令。

例如,我們在後台執行一個sleep 1000命令,使用jobs命令查看:

$ jobs
[1]+  Running                 nohup sleep 1000 &amp;
登入後複製

其中,方括號中的數字表示任務編號,加號或減號表示任務的優先級,Running 表示任務正在後台運行。除此之外,還有其他可能的狀態,包括 Stopped(已停止)、Done(已完成)等。

我們也可以使用fg 指令將一個後台任務移到前台繼續執行,例如:

$ fg %1
登入後複製

這個指令會將任務編號為1 的任務移到前台,繼續執行。如果希望將任務暫停或恢復,可以使用 Ctrl-Z 鍵,在目前 shell 中發送 SIGTSTP 訊號。

$ fg %1
nohup sleep 1000

^Z
[1]+  Stopped                 nohup sleep 1000
登入後複製

此時如果想要恢復運行,可以使用bg指令:

$ bg %1
[1]+ nohup sleep 1000 &amp;
登入後複製

如果想要殺死該任務,可以使用kill指令:

$ kill %1
[1]+  Terminated              nohup sleep 1000
登入後複製

如果你想殺死所有後台任務,但是又覺得一個個地比較麻煩,可以用disown指令來解決:

$ disown -a
登入後複製

這個指令可以殺死所有後台任務,但不會有任何提示,你可以透過jobs指令來確認。

以上是Linux中的nohup指令怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板