如何將一個 Linux 命令轉至后臺運行?
在使用命令行工作的時候,如果某個任務耗時比較長,長時間的占據著終端,這總是很麻煩的。其實,在 Linux 中,可以將命令或進程發送到后臺,讓其在后臺運行,而釋放出終端來,這樣可以繼續運行其他的命令。
本文將介紹幾種向后臺發送進程的方法,然后還會展示如何將后臺進程恢復到前臺。
直接在后臺啟動 Linux 進程
如果我們知道某個命令或進程會花費很長時間,那么最好直接在后臺啟動該命令。
要在后臺運行 Linux 命令,只需要在命令的末尾添加一個 & 符號,如下所示:
比如,我們啟動一個簡單的 sleep 命令,將其發送到后臺:
當命令在后臺完成時,你應該能在終端上看到該命令的信息:
將正在運行的進程發送到后臺
如果你已經運行了一個程序,然后忽然意識到,這個程序本應該在后臺運行。那么這種情況下,也有辦法將正在運行的進程發送到后臺。
此時需要做的,首先按 Ctrl + Z 鍵,暫停正在運行的進程,然后使用 bg(background 的縮寫)向后臺發送進程,該被掛起的進程就會轉到后臺繼續運行。
還是以剛才那個 sleep 命令為例,首先在前臺運行 sleep 命令,然后將其轉到后臺:
查看后臺運行的所有進程
通過上文的介紹,我們知道了如何在后臺運行程序,那么另一個問題,就是我們希望能夠查看目前都有哪些進程正在后臺運行。
要查看當前正在運行的后臺進程,可以使用 jobs 命令,如下:
為了演示這個例子,我們首先在后臺運行一些命令:
現在,運行 jobs 命令,就會顯示所有正在運行的進程或命令:
在上述輸出中,注意到其中的數字([1], [2], [3])了嗎?這是作業ID。另外,其中的兩條輸出,數字后面的 + 和 - 符號是什么意思呢?+ 表示我們運行的最后一個作業,- 表示我們運行的倒數第二個作業。
將后臺運行的進程轉至前臺
接下來一個問題,如何將在后臺運行的進程,轉到前臺呢?
將正在運行的命令發送到后臺,使用 bg;那么反過來,要恢復后臺進程,可使用 fg(foreground的簡寫) 命令:
單單使用 fg 命令而不帶任何參數,會把后臺作業列表中的最后一個進程帶到前臺。在前面的例子中,運行 fg 會將 vim 編輯器返回到終端中。
如果我們要將某個指定的進程帶到前臺,還需要指定作業的 id。這個 id 就是我們前面提到的,使用 jobs 命令的輸出中,每一行最前面的數字。
上文所述就是一些關于將 Linux 命令在后臺運行的相關知識。除此以外,建議再學習一下 nohup 命令,這個命令可以讓我們在注銷會話后(也就是關閉終端后),讓命令繼續在后臺運行。稍后我們也會分享一篇關于 nohup 的文章,敬請關注。
以上就是本次分享全部內容,歡迎討論。