共計 1822 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容主要講解“Linux 中的 nohup 命令如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Linux 中的 nohup 命令如何使用”吧!
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
其中,方括號中的數字表示任務編號,加號或減號表示任務的優先級,Running 表示任務正在后臺運行。除此之外,還有其他可能的狀態,包括 Stopped(已停止)、Done(已完成)等。
我們還可以使用 fg 命令將一個后臺任務移動到前臺繼續運行,例如:
$ fg %1
這個命令會將任務編號為 1 的任務移動到前臺,繼續執行。如果希望將任務暫停或恢復,可以使用 Ctrl-Z 鍵,在當前 shell 中發送 SIGTSTP 信號。
$ fg %1
nohup sleep 1000
[1]+ Stopped nohup sleep 1000
此時如果想要恢復運行,可以使用 bg 命令:
$ bg %1
[1]+ nohup sleep 1000
如果想要殺死該任務,可以使用 kill 命令:
$ kill %1
[1]+ Terminated nohup sleep 1000
如果你想殺死所有后臺任務,但是又覺得一個個地比較麻煩,可以使用 disown 命令來解決:
$ disown -a
這個命令可以殺死所有后臺任務,但不會有任何提示,你可以通過 jobs 命令來確認。
到此,相信大家對“Linux 中的 nohup 命令如何使用”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!