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