如何在后臺運(yùn)行 Linux 命令
Linux 命令是使用終端與系統(tǒng)交互的好方法。但是,有時(shí)可能需要一段時(shí)間才能完成手頭的任務(wù)。這迫使用戶等待相當(dāng)長的時(shí)間或完全生成一個(gè)新的 shell。
幸運(yùn)的是,您可以通過一些簡單的方法在后臺運(yùn)行 Linux 命令。本文的其余部分說明了其中一些方法。
1、在你的命令后添加一個(gè) &
運(yùn)行 Linux 后臺命令的最簡單方法是在命令后添加與號 (&)。例如,如果從終端啟動 gedit 文本編輯器,則在關(guān)閉編輯器之前無法使用 shell。但是,當(dāng)您在命令中添加額外的 & 時(shí),您將能夠立即使用 shell。
gedit &
對于需要長時(shí)間執(zhí)行的任務(wù),&符號可以使當(dāng)前終端窗口不被占用,這樣就能繼續(xù)在同一個(gè)終端上工作,甚至關(guān)閉終端窗口也不會影響任務(wù)的正常執(zhí)行。不過需要注意的是,如果要求這個(gè)任務(wù)輸出內(nèi)容到標(biāo)準(zhǔn)輸出中(例如 echo 或 ls),即便使用了 &,也會等待這些輸出任務(wù)在前臺運(yùn)行完畢;當(dāng)使用 &將一個(gè)進(jìn)程放置到后臺運(yùn)行的時(shí)候,Bash 會提示這個(gè)進(jìn)程的進(jìn)程 ID。在 Linux 系統(tǒng)中運(yùn)行的每一個(gè)進(jìn)程都有一個(gè)唯一的進(jìn)程 ID,我們可以使用進(jìn)程 ID 來暫停、恢復(fù)或者終止對應(yīng)的進(jìn)程。
2、使用bg向后臺發(fā)送運(yùn)行命令
有時(shí)您運(yùn)行一個(gè)命令,卻發(fā)現(xiàn)它需要很長的時(shí)間才能完成。通過按Ctrl + Z鍵,可以將一個(gè)正在前臺執(zhí)行的命令放到后臺,并且暫停。您可以通過 在終端中輸入jobs來查看所有后臺任務(wù)的列表。使用fg命令將后臺中的命令調(diào)至前臺繼續(xù)運(yùn)行。您可以通過 在終端中輸入jobs來查看所有后臺任務(wù)的列表。使用fg命令將后臺中的命令調(diào)至前臺繼續(xù)運(yùn)行。
然后使用bg命令,將一個(gè)在后臺暫停的命令,變成繼續(xù)執(zhí)行。如果后臺中有多個(gè)命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
3、使用 nohup 向后臺發(fā)送命令
Linux 中 的nohup命令允許管理員運(yùn)行不受掛斷(Hang Up)信號影響的終端命令。您可以使用 nohup 在后臺運(yùn)行 Linux 命令。
下面的示例在后臺運(yùn)行Nmap 端口掃描。
- nohup sudo nmap -sS --top-ports=15 192.168.150.1/24
nohup 的一個(gè)主要好處是,即使您退出 shell,您的命令也會運(yùn)行。此外,它會生成執(zhí)行的日志文件。在當(dāng)前目錄或 $HOME 中查找nohup.out。
原文鏈接:https://www.linuxmi.com/linux-mingling-houtai-yunxing.html
4、使用系統(tǒng)重定向運(yùn)行后臺命令
您還可以使用系統(tǒng)重定向在 Linux 中運(yùn)行后臺命令。例如,如果您運(yùn)行以下ping命令,您的 shell 將在后臺運(yùn)行它并立即返回終端提示。
- ping -c5 8.8.8.8 >Linuxmi.com.log 2>&1 &
這里 ping 命令的輸出被重定向到output.log文件。如果你想丟棄結(jié)果,你可以用/dev/null替換它。的2>&1是告訴bash到任何錯(cuò)誤重定向到相同的文件。最后的&指示 bash 在后臺運(yùn)行此命令。
5.、使用 disown 將 Linux 命令設(shè)置為后臺運(yùn)行
Linux 中 的disown命令可以輕松地在后臺運(yùn)行命令。首先,您需要使用& 運(yùn)算符在后臺發(fā)送任務(wù)。然后,鍵入disown以將其與shell分離。
- gedit & disown
disown 的一個(gè)主要優(yōu)點(diǎn)是,與 nohup 一樣,當(dāng)您關(guān)閉 shell 或注銷時(shí),系統(tǒng)不會終止您的任務(wù)。
6、使用 Tmux 在后臺運(yùn)行 Linux 命令
Tmux 是一個(gè)強(qiáng)大的多路復(fù)用器,它允許我們在單個(gè)窗口中運(yùn)行多個(gè)終端會話。對于不熟悉它的人來說,學(xué)習(xí) tmux 是一個(gè)很好的選擇。Tmux 使在 Linux 中運(yùn)行后臺命令毫不費(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命令并將其保留在后臺。您可以使用此方法在后臺執(zhí)行任何 Linux 命令。
相關(guān):如何為 Linux 安裝和配置 Tmux 鏈接見 https://www.linuxmi.com/linux-tmux.html
將您的 Linux 命令留在后臺
能夠在后臺運(yùn)行命令使系統(tǒng)管理對管理員來說更有效率。您可以通過多種方式為您的任務(wù)做背景。像&和Ctrl + Z這樣的 Bash 功能很方便,但系統(tǒng)會在 shell 關(guān)閉時(shí)終止后臺作業(yè)。另一方面,即使您注銷或終止 shell ,諸如nohup和disown 之類的工具也會使您的命令保持運(yùn)行。
如果您將程序長時(shí)間留在后臺,如果編碼不當(dāng),它們可能會變成僵尸進(jìn)程。這些過程會顯著降低系統(tǒng)速度。因此,請確保每隔一段時(shí)間識別并殺死僵尸進(jìn)程。