如何在Linux中同時執行命令

我們曾經在這裡寫過如何在Linux上同時運行多個命令的方法,現在我們將學習如何同時執行它們。 假設您正在Linux“ vi”編輯器中編輯配置文件,突然之間您需要在另一個文件中找到一些數據? 在普通的GUI系統中,這不是問題。 您只需打開第二個文件,檢查何時需要,然後切換到第一個程序。 在命令行上並不是那麼容易。 通過CLI執行進程會阻止其他程序的進一步輸入。 以sleep命令為例:

它可以工作30分鐘,但我們無能為力。 但是,我們仍然可以在Linux中使用“ bg”和“ fg”命令手動管理進程並同時運行命令。 這就是它的工作方式。

Ctrl + c和Ctrl + z

我們都知道,如果進程錯誤,則ctrl + c會將其關閉。 程序運行時間過長,還是來自滾動速度比您看到的速度更快的巨大輸出! 按下Ctrl + C會立即以SIGINT信號中斷該過程。 這表明該過程完成了所執行的操作,並立即終止。

這在大多數情況下都有效,但是請記住,每個過程都必須決定如何處理它。 某些程序(例如vi)在退出前需要確認-通常沒有充分的理由,因為在沒有警告的情況下中斷可能會導致數據丟失或損壞。

但是,您可以掛起它,而不是使用Ctrl + c終止該過程。 在這裡使用Ctrl + z很有用。 按Ctrl + z會暫時掛起程序並將其發送回後台。 例如:

如何在Linux中同時執行命令

在上圖中,我們開始使用vi文本編輯器編輯“測試”文件。 然後我們按Ctrl + z。 此命令“停止”該過程或將其掛起。 這些被稱為“工作”,每個工作都有編號。 每當我們在方括號中暫停該過程時,就會顯示此數字。 例如,已暫停的vi應用程序的作業號為1。

現在該過程已暫停,我們回到了命令行,可以在其中執行其他命令!

恢復暫停的工作

請注意,上面的vi編輯器之類的已暫停作業將不再運行。 她處於暫時凍結狀態,正等待復興。 我們可以通過兩種方式來恢復它:

  1. 重建工作並將其置於最前面(並運行命令行)
  2. 恢復工作並將其發送到後台(我們可以繼續做其他事情)

要重新激活已暫停的作業並將其置於前台,我們使用以下命令:

fg% n

其中“ n”是工作編號。 因此,如果您查找完數據並想返回到在vi中編輯文件,請輸入:

fg% 1

如果我們希望流程恢復操作並繼續進行,請輸入:

bg% n

其中“ n”再次是作業編號。 因此,如果您有一個需要連續運行的進程(例如,安裝Apache),但仍需要在命令行上執行其他工作,則可以使用“ bg”命令將其恢復。

如果您忘記了流程的工作編號,請不要擔心。 只需使用以下命令:

jobs -l

它將顯示現有作業的列表及其狀態和作業編號,如下所示:

如何在Linux中同時執行命令

因此,永遠不會有失去太多工作的危險。

立即在後台運行命令

上面的腳本顯示了如何使用Ctrl + z暫停進程,然後使用“ bg%n”在後台恢復其操作。 但是,我們可以通過在命令後面簡單鍵入“&”號來組合這兩個命令。 此處可以找到&符號命令的示例。 這將立即將其發送到後台。 例如:

sleep 30m &

運行sleep命令30分鐘,該過程將在後台繼續運行30分鐘,如下所示:

如何在Linux中同時執行命令

非常舒適! 和以前一樣,您可以使用“ fg”命令將進程帶回到前台,然後根據需要終止或掛起該進程。

警告當在這樣的後台提交進程時,請確保它不會在命令行或標準輸出上生成任何輸出! 確保將輸出重定向到文件或其他內容。 否則,它將繼續在後台運行,並在命令行中填充其輸出,並且您甚至無法使用Ctrl + c將其殺死,因為它在前台不起作用。

因此,有了此警告,您現在知道如何在Linux中同時運行命令,並且可以對您的內容執行多任務處理。

請禁用您的廣告攔截器或將此網站列入白名單!

Sidebar