一、后臺進程
????????在后臺運行進程是 Linux 系統中的常見要求。在后臺運行進程允許您在進程獨立運行時繼續使用終端或執行其他命令。這對于長時間運行的任務或當您想要同時執行多個命令時特別有用。
????????在深入研究各種方法之前,讓我們先了解一下什么是后臺進程。在 Linux 中,后臺進程是指獨立于終端運行的進程。執行命令時,它通常在前臺運行,這意味著它會占用終端直到完成。另一方面,在后臺運行進程允許您執行其他命令,而進程則繼續默默運行。
二、如何在后臺運行 Linux 命令
1. 在命令后添加一個 & 符號
????????運行 Linux 后臺命令的最簡單方法是在命令后添加一個“與”符號( & )。例如,如果您從終端啟動 gedit 文本編輯器,則在關閉編輯器之前無法使用 shell。但是,當您在命令中添加額外的&時,它會告訴 Bash 在后臺運行該命令,以便您立即使用 shell。
gedit &
2. 使用 bg 將正在運行的命令發送到后臺
????????有時,您運行命令后才發現它需要很長時間才能完成。您可以通過按下Ctrl + Z鍵,然后使用bg命令,輕松地將此類命令發送到后臺。按下Ctrl + Z可停止正在運行的進程,而bg可將其發送到后臺。
????????您可以在終端中輸入jobs來查看所有后臺任務的列表。使用fg命令將后臺進程調到前臺。
????????如果后臺有多個作業正在運行,您可以輸入fg后跟%n,其中n是作業 ID。例如,要將后臺作業2移到前臺,命令如下:
fg %2
????????要終止后臺作業,請在 kill 命令后使用%和作業 ID。
3. 使用 nohup 將命令發送到后臺
????????Linux 中的nohup命令允許管理員運行不受 HUP 或Hang Up信號影響的終端命令。您可以使用 nohup 在 Linux 上輕松地在后臺運行命令。
????????下面的示例在后臺運行一個簡單的 Nmap 端口掃描:
nohup sudo nmap -sS --top-ports=15 192.168.1.1/24
????????nohup 的一個主要優點是,即使退出 shell,命令也會運行。此外,它還會生成執行的日志文件。在當前目錄或 $HOME 中查找nohup.out 。
4. 使用系統重定向運行后臺命令
????????您還可以使用系統重定向在 Linux 中運行后臺命令。例如,如果您運行以下 ping 命令,您的 shell 將在后臺運行它并立即將終端控制權交還給您:
ping -c5 8.8.8.8 > output.log 2>&1 &
????????這里 ping 命令的輸出被重定向到output.log文件。如果要丟棄結果,可以將其替換為/dev/null。2>&1告訴 Bash 將任何錯誤重定向到同一個文件。最后的&指示 Bash 在后臺運行此命令。
5. 使用 disown
????????disown命令可讓您輕松地在后臺運行進程。首先,您需要使用&運算符將任務發送到后臺。然后,輸入disown以將其從 shell 中分離。
gedit & disown
????????disown 的一個主要優點是,與 nohup 一樣,當您關閉 shell 或注銷時,系統不會終止您的任務。
6. 使用 tmux
?????????tmux 是一款功能強大的多路復用器,可讓您在單個窗口中運行多個終端會話。對于不熟悉 Linux 的人來說,學習如何使用和配置 tmux是一個絕佳的選擇。tmux 讓在 Linux 中運行后臺命令變得輕而易舉。
????????tmux new -d 'ping -c 10 8.8.8.8 > output.log'
????????當您運行上述tmux命令時,它將在單獨的 shell 中執行ping命令并使其在后臺運行。您可以使用此方法在后臺啟動任何 Linux 進程或命令。