1. 程式人生 > >Linux暫停和恢復程序

Linux暫停和恢復程序

Linux暫停和恢復程序

kill -STOP 1234 將該程序暫停。 
如果要讓它恢復到後臺,用kill -CONT 1234 (很多在前臺執行的程式這樣是不行的) 
如果要恢復到前臺,請在當時執行該程序的那個終端用jobs命令查詢暫停的程序。 
然後用 fg 〔job號〕把程序恢復到前臺。  

如果jobs只查詢到一個程序,只用 fg 即可。 

例:[email protected]:~# bc -q 
[1]+  Stopped                 bc -q 

[email protected]:~# bc -q  
[2]+  Stopped                 bc -q 
[email protected]:~# jobs 
[1]-  Stopped                 bc -q 
[2]+  Stopped                 bc -q 
[email protected]
:~# fg 2 
bc -q 
1+1 
2  
A,Shell支援作用控制,有以下命令: 
1. command& 讓程序在後臺執行 
2. jobs 檢視後臺執行的程序 
3. fg %n 讓後臺執行的程序n到前臺來 
4. bg %n 讓程序n到後臺去;      
PS:"n"為jobs檢視到的程序編號.  

察看jobs   
使用jobs或ps命令可以察看正在執行的jobs。    
jobs 命令執行的結果,+表示是一個當前的作業,減號表是是一個當前作業之後的一個作業,jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated,但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的程序標識;也就是說,jobs命令 顯示的是當前shell環境中所起的後臺正在執行或者被掛起的任務資訊;    
程序的掛起    
後臺程序的掛起:    
在solaris中通過stop命令執行,通過jobs命令檢視job號(假設為num),然後執行stop %num;    
在redhat中,不存在stop命令,可通過執行命令kill -stop PID,將程序掛起;    
當要重新執行當前被掛起的任務時,通過bg %num 即可將掛起的job的狀態由stopped改為running,仍在後臺執行; 
當需要改為在前臺執行時,執行命令fg %num即可;    
前臺程序的掛起:    
ctrl+Z;    
程序的終止    
後臺程序的終止:   
方法一:  通過jobs命令檢視job號(假設為num),然後執行kill %num    
方法二:  通過ps命令檢視job的程序號(PID,假設為pid),然後執行kill pid    
前臺程序的終止:    
ctrl+c    
kill的其他作用   
kill除了可以終止程序,還能給程序傳送其它訊號,使用kill -l 可以察看kill支援的訊號。    
SIGTERM是不帶引數時kill傳送的訊號,意思是要程序終止執行,但執行與否還得看程序是否支援。如果程序還沒有終止,可以使用kill -SIGKILL pid,這是由核心來終止程序,程序不能監聽這個訊號。