如何在後臺運行Linux命令?

如何在後臺運行Linux命令?

一般狀況下,在 Linux 終端中運行命令時,咱們必須等前一命令執行完成後,在輸入並執行後一條命令,稱之爲在前臺或前臺進程中運行命令,進程在前臺運行時,將佔用您的外殼,而且您也可使用輸入設備與其終端進行交互。ide

當一條命令執行須要很長時間才能完成,而且想同時運行其餘命令怎麼辦呢?日誌

  • 第一:啓動新的 Shell 會話並在其中運行命令;code

  • 第二:在後臺運行命令;

後臺進程是從終端啓動並在後臺運行,無需用戶與其終端進行交互的進程及命令;進程

一、組合鍵及命令
以 httpd-2.2.17.tar.gz 壓縮包爲例,好比一個壓縮包文件解壓需在終端屏幕下解壓很長時間,甚至要刷很長一段屏幕才能解壓完畢,那麼咱們能夠按下Ctrl+Z組合鍵,即可以暫停運行並隱藏到後臺,將會返回一箇中止序號,此時進程時暫停的,並不會繼續運行。it

輸入bg命令便可繼續將該任務在後臺執行。class

輸入fg + 序號命令便可讓進程返回到前臺執行。後臺

執行過程當中,能夠輸入jobs命令來查看全部的後臺任務了。終端

# tar -zxf httpd-2.2.17.tar.gz                             ## 解壓 httpd 壓縮包
^Z                                                         ## 按下 Ctrl+Z 組合鍵暫停
[1]+  Stopped                 tar -zxf httpd-2.2.17.tar.gz

# bg                                                       ## 輸入 bg 命令,繼續在後臺運行
[1]+ tar -zxf httpd-2.2.17.tar.gz &

# jobs                                                     ## 查看全部的後臺任務
[1]+  Done                    tar -zxf httpd-2.2.17.tar.gz

二、&
在執行命令後加&,使其在終端後臺運行。grep

# ./yum_install.sh &

執行完如上命令,yum腳本便在後臺運行,雖然在後臺運行了,但輸出的內容仍是會在終端上進行顯示的,那麼咱們能夠採用將執行後的命令輸出結果重定向到文件中。方法

# ./yum_install.sh >> 202001141411out.txt 2>&1 &

將執行的結果重定向到202001141411out.txt文件中,2>&1將標準錯誤重定向到標準輸出,判斷yum腳本文件執行成功沒成功,咱們只需查看202001141411out.txt文件便可;

若是出現腳本文件執行了一段時間,卡死,沒法繼續運行了,能夠經過第一種方法:jobs命令

# jobs -l

或者使用ps命令

# ps -aux | grep yum_install.sh

三、nohup
&:可使命令在後臺運行,當關閉控制檯時,進程也將會被殺死,若是但願關閉控制檯後,進程依舊運行,這時則須要使用nohup。

nohup:no hang up,不掛起的意思。

在執行命令最前面使用nohup,當關閉控制檯時,進程依舊會在後臺繼續運行。

# nohup ./yum_install.sh &

如上nohup執行方式,當判斷該腳本是否執行完畢,可執行命令ps -aux | grep yum_install.sh查看;

除此以外,咱們能夠將運行結果輸出到nohup.log文件中,當沒有指定輸出重定向時,日誌文件會默認輸出到nohup.out文件;

# nohup ./yum_install.sh > nohup.log 2>&1 &

若是以爲這篇文章對你有所幫助,麻煩點個在看、留言、轉發,支持一波,感謝!

PS:對了,公衆號最近新上線了一個讚揚自動回覆的新功能,開個讚揚體驗一下,讚揚以後你將會收到一條回覆消息,來試試看!

本公衆號所有博文已整理成一個目錄,請在公衆號後臺回覆「m」獲取!

相關文章
相關標籤/搜索