在後台執行Linux命令的方法

2022-09-26 12:12:28 字數 1988 閱讀 8275

通常情況下,當你在終端執行乙個命令,在你開始輸入另外乙個命令之前程式設計客棧,你必須等待當前命令執行結束。這被稱為在前程式設計客棧臺執行命令,或者前台程序。當乙個程序在前台執行時,它占用了你的 shell,並且你可以通過輸入裝置和它進行互動。

那麼當乙個命令執行需要很長時間,而你又想同時執行另外的命令,應該怎麼辦?有幾種選項可以選擇。最明顯並且最直接的選項就是啟動乙個新的 shell 會話,並且在上面執行命令。另外乙個選項,就是在後台執行命令。

乙個後台程序就是說乙個程序/命令在終端啟動後,執行在後台,並且不會和使用者發生任何互動。

在這篇文章中,我們將會討論在 linux 中的後台程序。我們將會為你演示如何在後台啟動命令,並且保持程序直到會話結束。

在後台執行乙個 linux 命令

為了在後台執行命令,請在命令的後面新增乙個符號(&):

command &

這個 shell 的任務 id(被括號包圍的內容)和程序 id 將會被mqdzvg列印在終端:

[1] 25177

你可以在後台同時執行很多程序。

後台程序會將不斷地將資訊寫在終端上。為了禁止stdout和stderr資訊,請使用下面的語法:

command > /dev/null 2>&1 &

>/dev/null 2>&1意味著 將stdout轉向/dev/null,而stderr轉向sdtout。

使用jobs命令顯示當前 shell 會話中所有停止的和後台的任務狀態。

jobs -l

輸出內容包括任務 id,程序 id,任務狀態和啟動任務的命令:

[1]+ 25177 running ping google.com &

想要將後台程序轉到前台的話,請使用fg命令:

fg如果你在後台有多個任務,請在命令後新增%+任務 id:

fg %1

想要停止後台程序,請在kill命令後新增程序 id:

kill -9 25177

將前台程序移動到後台

想要將乙個前台程序移動到後台:

01.通過按鍵ctrl+z停止當前程序

02.通過輸入bg將停止程序移動到後台去

保持後台程序執行直到 shell 退出

如果你丟失了連線,或者你退出了 shell 會話,後台程序將會被終止。有很多方法可以保證程序執行直到互動的 shell 結束。

乙個方法就是從 shell 任務控制中移除任務,使用內建的disown:

disown

如果你有很多後台任務,請在命令後面新增%+任務 id:

disown %1

通過使用jobs -l來確認任務已經從任務表中移除。為了列出正在執行的程序,請使用ps aux命令。

另外乙個保證程序執行,直到 shell 退出的方法就是使用nohup。

nohup命令後面跟著另外乙個程式作為引數,將會忽略所有的sighup(掛起)訊號。sighup訊號用來傳送給程序,用來通知終端已經關閉了。

使用nohup命令來在後台執行命令,請輸入:

nohup command &

命令輸出將會重定向到nohup.out檔案。

nohup: ignoring input and appending output to 'nohup.out'

如果你登出或者關閉終端,程序不會被終止。

替代方案

有一些程式允許你在同一時間擁有多個非互動會話。

screen

screen 或者 gnu screen 是乙個終端多路復用程式,它允許你開啟乙個螢幕會話,並且在會話中開啟任意多數量的視窗(虛擬終端)。在 screen 中執行的程序,即便視窗不可見,甚至你失去連線,它們依然會執行。

tmux

tmux 是乙個現代化的 gnu 螢幕互動程式。通過 tmux,你可以建立乙個會話,然後再會話中開啟多個視窗。tmux 會話是持久程式設計客棧性的,這意味著即便你關閉了終端,這些 tmux 上執行的程式依然會執行。

總結為了在後台執行命令,請在命令的後面新增符號&

當你在後台執行命令時,你可以不需要等待它結束,就可以接著執行另外乙個命令。

Linux下在後台執行命令

使用ssh會話在遠端linux伺服器執行命令時,如果由於網路問題終端斷開連線,則正在前台執行命令也會隨之終止,為了解決這個問題,就需要將命令放在後台執行,並且退出當前終端也不會終止程序。command 在要執行的命令後加 表示將此程序放在後台執行,程式中的輸出依然會在前台顯示。如果希望繼續在當前終端...

linux shell 在後台執行命令

前台當在前台執行命令時,shell將一直等到命令執行完畢,shell會給出提示符,使使用者可以繼續輸入下一條命令。當命令在後台執行時,不必等待該命令完成 就可以直接執行另一條命令。作業是指由乙個或者 通過 管道連線的 多個命令組成的序列。前台只能有乙個作業位於視窗或者螢幕中,但可以有多個作業在後台執...

將你的Linux命令放在後台執行

文章refer to 有兩種方式 1.command 後台執行,你關掉終端會停止執行 2.nohup command 後台執行,你關掉終端也會繼續執行 command 表示你執行的shell命令,或者指令碼。一 簡介 linux unix 區別於微軟平台最大的優點就是真正的多使用者,多工。因此在任務...