一般狀況下,在 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」獲取!