linux系統任務的背景運作和關閉、檢視背景任務常用指令有fg、bg、jobs、&、nohup、ctrl+z和ctrl+c等 指令
1、運作程式
如果程式是 sh檔案,直接用./sh 檔案就可以運作,但是如果想背景運作,即使關閉目前的終端也可以運作的話,需要nohup指令和&指令。
(1)&指令
功能:加在一個指令的最後,可以把這個指令放在背景執行(關閉目前的終端後将被kill)
例如:watch -n 10 sh test.sh & #每10s在背景執行一次test.sh腳本
(2)nohup指令
功能:不挂斷的運作指令,其意思是如果讓程式始終在背景執行,即使關閉目前的終端也執行(之前的&做不到),這時候需要nohup。該指令可以在你退出帳戶/關閉終端之後繼續運作相應的程序。關閉中斷後,在另一個終端jobs已經無法看到背景跑得程式了,此時利用ps(程序檢視指令)
例如:
nohup ./test &
ps -aux | grep "test.sh" #a:顯示所有程式 u:以使用者為主的格式來顯示 x:顯示所有程式,不以終端機來區分
。
2、檢視目前背景運作的指令
有兩個指令可以用,jobs和ps,差別是jobs用于檢視目前終端背景運作的任務,換了終端就看不到了。而ps指令用于檢視瞬間程序的動态,可以看到别的終端運作的背景程序。
(1)jobs指令
功能:檢視目前終端背景運作的任務
jobs -l選項可顯示目前終端所有任務的PID,jobs的狀态可以是running,stopped,Terminated。+ 号表示目前任務,- 号表示後一個任務。
3、前背景程序的切換與控制
(1)fg指令
功能:将背景中的指令調至前台繼續運作
如果背景中有多個指令,可以先用jobs檢視jobnun,然後用 fg %jobnum 将選中的指令調出。
(2)Ctrl + z 指令
功能:将一個正在前台執行的指令放到背景,并且處于暫停狀态
(3)bg指令
功能:将一個在背景暫停的指令,變成在背景繼續執行
如果背景中有多個指令,可以先用jobs檢視jobnum,然後用 bg %jobnum 将選中的指令調出繼續執行。
4、關閉目前背景運作的指令
kill指令:結束程序
(1)通過jobs指令檢視jobnum,然後執行 kill %jobnum
(2)通過ps指令檢視程序号PID,然後執行 kill %PID
如果是前台程序的話,直接執行 Ctrl+c 就可以終止了