前言
一般狀況下,在 Linux 終端中運行命令時,咱們必須等前一命令執行完成後,在輸入並執行後一條命令,稱之爲在前臺或前臺進程中運行命令,進程在前臺運行時,將佔用您的外殼,而且您也可使用輸入設備與其終端進行交互。html
當一條命令執行須要很長時間才能完成,而且想同時運行其餘命令怎麼辦呢?git
- 第一: 啓動新的 Shell 會話並在其中運行命令;
- 第二: 在後臺運行命令;
後臺進程是從終端啓動並在後臺運行,無需用戶與其終端進行交互的進程及命令;github
1、組合鍵及命令
以 httpd-2.2.17.tar.gz 壓縮包爲例,好比一個壓縮包文件解壓需在終端屏幕下解壓很長時間,甚至要刷很長一段屏幕才能解壓完畢,那麼咱們能夠按下Ctrl+Z
組合鍵,即可以暫停運行並隱藏到後臺,將會返回一箇中止序號,此時進程時暫停的,並不會繼續運行。post
輸入bg
命令便可繼續將該任務在後臺執行。url
輸入fg + 序號
命令便可讓進程返回到前臺執行。spa
執行過程當中,能夠輸入jobs
命令來查看全部的後臺任務了。.net
# 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
複製代碼
2、&
在執行命令後加 &
,使其在終端後臺運行。日誌
# ./yum_install.sh &
複製代碼
執行完如上命令,yum腳本便在後臺運行,雖然在後臺運行了,但輸出的內容仍是會在終端上進行顯示的,那麼咱們能夠採用將執行後的命令輸出結果重定向到文件中。code
# ./yum_install.sh >> 202001141411out.txt 2>&1 &
複製代碼
將執行的結果重定向到202001141411out.txt
文件中,2>&1
將標準錯誤重定向到標準輸出,判斷yum腳本文件執行成功沒成功,咱們只需查看202001141411out.txt
文件便可;htm
若是出現腳本文件執行了一段時間,卡死,沒法繼續運行了,能夠經過第一種方法:jobs
命令
# jobs -l
複製代碼
或者使用ps
命令
# ps -aux | grep yum_install.sh
複製代碼
3、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 &
複製代碼
若是文章和筆記能帶您一絲幫助或者啓發,請不要吝嗇你的贊和收藏,你的確定是我前進的最大動力😁