點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)
重磅干貨,第一時(shí)間送達(dá)

來源:Linux迷
原文鏈接:https://www.linuxmi.com/linux-mingling-houtai-yunxing.html
Linux 命令是使用終端與系統(tǒng)交互的好方法。但是,有時(shí)可能需要一段時(shí)間才能完成手頭的任務(wù)。這迫使用戶等待相當(dāng)長的時(shí)間或完全生成一個(gè)新的 shell。
幸運(yùn)的是,您可以通過一些簡(jiǎn)單的方法在后臺(tái)運(yùn)行 Linux 命令。本文的其余部分說明了其中一些方法。運(yùn)行 Linux 后臺(tái)命令的最簡(jiǎn)單方法是在命令后添加與號(hào) (&)。例如,如果從終端啟動(dòng) gedit 文本編輯器,則在關(guān)閉編輯器之前無法使用 shell。但是,當(dāng)您在命令中添加額外的 & 時(shí),您將能夠立即使用 shell。對(duì)于需要長時(shí)間執(zhí)行的任務(wù),&符號(hào)可以使當(dāng)前終端窗口不被占用,這樣就能繼續(xù)在同一個(gè)終端上工作,甚至關(guān)閉終端窗口也不會(huì)影響任務(wù)的正常執(zhí)行。不過需要注意的是,如果要求這個(gè)任務(wù)輸出內(nèi)容到標(biāo)準(zhǔn)輸出中(例如 echo 或 ls),即便使用了 &,也會(huì)等待這些輸出任務(wù)在前臺(tái)運(yùn)行完畢;當(dāng)使用 &將一個(gè)進(jìn)程放置到后臺(tái)運(yùn)行的時(shí)候,Bash 會(huì)提示這個(gè)進(jìn)程的進(jìn)程 ID。在 Linux 系統(tǒng)中運(yùn)行的每一個(gè)進(jìn)程都有一個(gè)唯一的進(jìn)程 ID,我們可以使用進(jìn)程 ID 來暫停、恢復(fù)或者終止對(duì)應(yīng)的進(jìn)程。2、使用bg向后臺(tái)發(fā)送運(yùn)行命令有時(shí)您運(yùn)行一個(gè)命令,卻發(fā)現(xiàn)它需要很長的時(shí)間才能完成。通過按Ctrl + Z鍵,可以將一個(gè)正在前臺(tái)執(zhí)行的命令放到后臺(tái),并且暫停。您可以通過 在終端中輸入jobs來查看所有后臺(tái)任務(wù)的列表。使用fg命令將后臺(tái)中的命令調(diào)至前臺(tái)繼續(xù)運(yùn)行。您可以通過 在終端中輸入jobs來查看所有后臺(tái)任務(wù)的列表。使用fg命令將后臺(tái)中的命令調(diào)至前臺(tái)繼續(xù)運(yùn)行。然后使用bg命令,將一個(gè)在后臺(tái)暫停的命令,變成繼續(xù)執(zhí)行。如果后臺(tái)中有多個(gè)命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺(tái)正在執(zhí)行的命令的序號(hào)(不是pid)3、使用 nohup 向后臺(tái)發(fā)送命令Linux 中 的nohup命令允許管理員運(yùn)行不受掛斷(Hang Up)信號(hào)影響的終端命令。您可以使用 nohup 在后臺(tái)運(yùn)行 Linux 命令。下面的示例在后臺(tái)運(yùn)行Nmap 端口掃描。nohup sudo nmap -sS --top-ports=15 192.168.150.1/24nohup 的一個(gè)主要好處是,即使您退出 shell,您的命令也會(huì)運(yùn)行。此外,它會(huì)生成執(zhí)行的日志文件。在當(dāng)前目錄或 $HOME 中查找nohup.out。4、使用系統(tǒng)重定向運(yùn)行后臺(tái)命令您還可以使用系統(tǒng)重定向在 Linux 中運(yùn)行后臺(tái)命令。例如,如果您運(yùn)行以下ping命令,您的 shell 將在后臺(tái)運(yùn)行它并立即返回終端提示。ping -c5 8.8.8.8 >Linuxmi.com.log 2>&1 &這里 ping 命令的輸出被重定向到output.log文件。如果你想丟棄結(jié)果,你可以用/dev/null替換它。的2>&1是告訴bash到任何錯(cuò)誤重定向到相同的文件。最后的&指示 bash 在后臺(tái)運(yùn)行此命令。5.、使用 disown 將 Linux 命令設(shè)置為后臺(tái)運(yùn)行Linux 中 的disown命令可以輕松地在后臺(tái)運(yùn)行命令。首先,您需要使用& 運(yùn)算符在后臺(tái)發(fā)送任務(wù)。然后,鍵入disown以將其與shell分離。disown 的一個(gè)主要優(yōu)點(diǎn)是,與 nohup 一樣,當(dāng)您關(guān)閉 shell 或注銷時(shí),系統(tǒng)不會(huì)終止您的任務(wù)。6、使用 Tmux 在后臺(tái)運(yùn)行 Linux 命令Tmux 是一個(gè)強(qiáng)大的多路復(fù)用器,它允許我們?cè)趩蝹€(gè)窗口中運(yùn)行多個(gè)終端會(huì)話。對(duì)于不熟悉它的人來說,學(xué)習(xí) tmux 是一個(gè)很好的選擇。Tmux 使在 Linux 中運(yùn)行后臺(tái)命令毫不費(fèi)力。tmux new -d 'ping -c 10 8.8.8.8 > www.linuxmi.com.log'當(dāng)您運(yùn)行上述tmux命令時(shí),它將在單獨(dú)的 shell 中執(zhí)行ping命令并將其保留在后臺(tái)。您可以使用此方法在后臺(tái)執(zhí)行任何 Linux 命令。能夠在后臺(tái)運(yùn)行命令使系統(tǒng)管理對(duì)管理員來說更有效率。您可以通過多種方式為您的任務(wù)做背景。像&和Ctrl + Z這樣的 Bash 功能很方便,但系統(tǒng)會(huì)在 shell 關(guān)閉時(shí)終止后臺(tái)作業(yè)。另一方面,即使您注銷或終止 shell ,諸如nohup和disown 之類的工具也會(huì)使您的命令保持運(yùn)行。如果您將程序長時(shí)間留在后臺(tái),如果編碼不當(dāng),它們可能會(huì)變成僵尸進(jìn)程。這些過程會(huì)顯著降低系統(tǒng)速度。因此,請(qǐng)確保每隔一段時(shí)間識(shí)別并殺死僵尸進(jìn)程。
推薦閱讀
國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))
年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了
中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP
張一鳴:每個(gè)逆襲的年輕人,都具備的底層能力
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營維護(hù)的號(hào),大家樂于分享高質(zhì)量文章,喜歡總結(jié)知識(shí),歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!