nohup & 讓行程在后臺運行的用法
準備一個可以長時間跑的腳本,
$ cat t.sh
#!/bin/bash
for i in $(seq 100)
do
sleep 1s
echo "i $i"
done
1.cmd
終端A運行/bin/bash t.sh
此時終端B可見t.sh行程
1.此時終端A Ctrl + C 或者 終端A 關閉
此時終端B不可見t.sh行程
2.cmd &
終端A運行/bin/bash t.sh &
此時終端B可見t.sh行程
1.終端A Ctrl + C
此時終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
2.終端A 關閉
此時終端B不可見t.sh行程 ( 如果行程是adb logcat實時任務也如此)
3.終端A exit
此時終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
3.bash并且 cmd &
終端A運行bash
終端A運行/bin/bash t.sh &
終端B可見t.sh行程
1.終端A Ctrl + C
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
2.終端A 關閉不確認關閉
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
3.終端A $ exit
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
4.nohup cmd
終端A運行nohup /bin/bash t.sh
終端B可見t.sh行程
1.終端A Ctrl + C
終端B不可見t.sh行程 (如果行程是adb logcat實時任務也如此)
2.終端A 關閉,確認關閉
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
5.bash并且nohup cmd
終端A運行bash
終端A 運行nohup /bin/bash t.sh
終端B可見t.sh行程
1.終端A Ctrl + C
終端B不可見t.sh行程 (如果行程是adb logcat實時任務也如此)
2.終端A 關閉,確認關閉
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
6.nohup cmd &
終端A運行 nohup /bin/bash t.sh &
終端B可見t.sh行程
1.終端A Ctrl + C
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
2.終端A exit
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
3.終端A 關閉不確認關閉
終端B可見t.sh行程 (如果行程是adb logcat實時任務也如此)
可見:
- nohup & '&‘區別為 Ctrl+ C可以殺死nohup的行程,殺不死’&'的行程,
- nohup & '&‘區別為 關閉終端殺不死nohup的行程,可以殺死’&'的行程,
- exit命令殺不死’&'的行程
- 用bash新開一個行程后,和不開bash不一樣, Ctrl + C | 關閉終端 | exit命令 都殺不死&的行程
- 用bash新開一個行程后,和不開bash一樣,
- 對于普通行程t.sh和實時行程adb logcat,結果是一樣的
所以讓行程在后臺跑可以以下方式
1. cmd &并且 exit
2. bash并且 cmd &并且 exit
3. bash并且 cmd &并且 關閉終端
4. nohup cmd并且 關閉終端
5. bash并且 nohup cmd并且 關閉終端
6. nohup cmd &并且 exit
7. nohup cmd &并且 關閉終端

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/300501.html
標籤:其他
上一篇:新版3.6.1 Android Studio 解決AndroidStudio編譯出現available for offline mode的問題
