天天看點

shell背景運作腳本

使shell腳本背景執行,基本的方法有兩種,第一種為在腳本後面追加&符号,第二種為在腳本前面使用nohup指令,結尾再追加&符号

一、背景運作腳本1

1、執行腳本test.sh:./test.sh

2、中斷腳本test.sh:ctrl+c

3、在1的基礎上将運作中的test.sh,切換到背景并暫停:ctrl+z

4、執行ctrl+z後,test.sh在背景是暫停狀态(stopped),使用指令:bg number讓其在背景開始運作(“number”是使用jobs指令查到的 [ ]中的數字,不是pid)

5、直接在背景運作腳本test.sh:./test.sh &

6、檢視目前shell環境中已啟動的任務情況:jobs

7、将test.sh切換到前台運作:fg %number(”number”為使用jobs指令檢視到的 [ ] 中的數字,不是pid)

8、中斷背景運作的test.sh腳本:先fg %number切換到前台,再ctrl+c;或是直接kill %number

以上兩種在背景運作test.sh的方法,當遇到退出目前shell終端時,背景運作的test.sh也就結束了。這是因為以上兩種方法使得test.sh在背景運作時,運作test.sh程序的父程序是目前shell終端程序,關閉目前shell終端時,父程序退出,會發送hangup信号給所有子程序,子程序收到hangup以後也會退出。是以要想退出目前shell終端時test.sh繼續運作,則需要使用nohup忽略hangup信号。

二、不中斷背景運作腳本

1、不中斷的在背景運作test.sh:nohup ./test.sh &(test.sh的列印資訊會輸出到目前目錄下的nohup.out中)

2、使用jobs可看到test.sh處于running狀态

3、使用ps -ef |grep test.sh可檢視到正在運作的test.sh腳本程序

4、退出目前shell終端,再重新打開,使用jobs看不到正在運作的test.sh,但使用ps -ef可以看到