文章目錄
- 1.nohup 的使用
- 2.后臺運行符 &的使用
- 3.總結
1.nohup 的使用
作用:當你在終端執行命令腳本,當腳本沒有執行完,如果你關閉終端,那么跟隨這個終端有關的行程都會退出執行,nohup 命令的作用就是讓使用此命令的腳本可以脫離終端繼續執行,不受終端退出的影響,
命令:
nohup bash shell_script.sh
nohup ./shell_script.sh
示例腳本:shell_script.sh
列印1-20的整數,列印時間間隔為1s
#!/bin/bash
for t in {1..20}
do
sleep 1
echo $t
done
執行:

使用nohup命令執行腳本后你會發現,此時終端處于不可互動狀態(不能輸入命令),要等待腳本執行完才會切換為可互動,此時終端不會有列印,列印被追加重定向到腳本所在目錄的nohup.out中去了(如果在此目錄下使用nohup命令執行多個腳本,則nohup.out打屏日志會出現重疊,建議相同目錄執行多個腳本的時候自己重定向,之后可以關閉終端,查看打屏輸出可以另外開啟終端執行:tail -f nohup.out),在此時終端ctrl+c,可停止行程,如果關閉終端,則此腳本會繼續執行直至結束,
關閉終端后執行結果的輸出:腳本執行完畢

在同一個目錄使用nohup執行多個腳本:nohup.out輸出重疊

2.后臺運行符 &的使用
作用:在終端執行命令時,以后臺行程來執行腳本或者命令,不會影響你接下去的命令輸入執行
命令:
bash shell_script.sh &
./shell_script.sh &
示例腳本:shell_script2.sh
#!/bin/bash
for t in {1..20}
do
sleep 1
echo $t
done > result.txt
執行:

可以看到在執行命令:bash shell_script2.sh & 后終端還是可以互動輸入的,并沒有等到腳本執行完才能輸入,回傳的4480是后臺運行腳本的行程號,終止此行程可以使用kill -9 4480 如果你在后臺4480行程沒有執行完前關閉此終端,則此行程會結束,這個就是和nohup命令不同的地方,
3.總結
在實際使用的程序中兩個集合使用更加方便: nohup bash shell_script.sh &
當你在使用xshell 或者MobaXterm等終端模擬軟體打開多個終端執行命令的時候就可以使用上述的命令,這樣就不會有N個視窗打開著掛載著任務了,眼不見心不煩
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102758.html
標籤:其他
