轉自:https://blog.csdn.net/Tim_phper/article/details/53536621
轉載於:
http://www.cszhi.com/20120328/linux-stop-process.html
對於一個運行中的進程,我們可以使用kill -STOP pid命令將其暫停執行,使用kill -CONT pid命令恢復其運行。
下面用一個實例說明:
1、首先使用tar命令打包/usr目錄:
[root@vps /]# tar zcf usr.tar.gz usr/
開啟一個新窗口查看其進程狀態:
[root@vps ~]# ps aux|grep tar root 18900 2.7 0.4 2760 1068 pts/1 R+ 09:23 0:00 tar zcf usr.tar.gz usr/
進程處於運行狀態(R)
2、使用kill -STOP 命令將該進程暫停:
[root@vps ~]# kill -STOP 18900
再觀察其狀態:
[root@vps ~]# ps aux|grep tar root 18900 1.4 0.4 2816 1120 pts/1 T 09:23 0:00 tar zcf usr.tar.gz usr/
此刻進程處於暫停狀態了(T)
3、使用kill -CONT恢復進程執行
[root@vps ~]# kill -CONT 18900 [root@vps ~]# ps aux|grep tar root 18900 1.5 0.4 2816 1128 pts/1 R 09:39 0:00 tar zcf usr.tar.gz usr/
進程恢復運行狀態(R)
附:
ps的用法:
常用參數
-A 顯示所有進程(等價於-e)(utility) -a 顯示一個終端的所有進程,除了會話引線 -N 忽略選擇。 -d 顯示所有進程,但省略所有的會話引線(utility) -x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility) -p pid 進程使用cpu的時間 -u uid or username 選擇有效的用戶id或者是用戶名 -g gid or groupname 顯示組的所有進程。 U username 顯示該用戶下的所有進程,且顯示各個命令的詳細路徑。如:ps U zhang;(utility) -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on. -l 長格式(有F,wchan,C 等字段) -j 操作格式 -o 用戶自定義格式。 v 以虛擬存儲器格式顯示 s 以信號格式顯示 -m 顯示所有的線程 -H 顯示進程的層次(和其它的命令合用,如:ps -Ha)(utility) e 命令之后顯示環境(如:ps -d e; ps -a e)(utility) h 不顯示第一行 au(x) 輸出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程擁有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的記憶體使用率 VSZ: 占用的虛擬記憶體大小 RSS: 占用的記憶體大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 該行程的狀態: D: 不可中斷的靜止 R: 正在執行中 S: 靜止狀態 T: 暫停執行 Z: 不存在但暫時無法消除 W: 沒有足夠的記憶體分頁可分配 <: 高優先序的行程 N: 低優先序的行程 L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O) START: 行程開始時間 TIME: 執行的時間 COMMAND:所執行的指令 進程STAT狀態: D 無法中斷的休眠狀態(通常 IO 的進程); R 正在運行,在可中斷隊列中; S 處於休眠狀態,靜止狀態; T 停止或被追蹤,暫停執行; W 進入內存交換(從內核2.6開始無效); X 死掉的進程; Z 僵屍進程不存在但暫時無法消除; W: 沒有足夠的記憶體分頁可分配 WCHAN 正在等待的進程資源; <: 高優先級進程 N: 低優先序進程 L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O),即,有些頁被鎖進內存 s 進程的領導者(在它之下有子進程); l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads); + 位於后台的進程組;
kill 終止進程有十幾種控制進程的方法,下面是一些常用的方法:
kill -STOP [pid] 發送SIGSTOP (17,19,23)停止一個進程,而並不消滅這個進程。 kill -CONT [pid] 發送SIGCONT (19,18,25)重新開始一個停止的進程。 kill -KILL [pid] 發送SIGKILL (9)強迫進程立即停止,並且不實施清理操作。 kill -9 -1 終止你擁有的全部進程。
SIGKILL 和 SIGSTOP 信號不能被捕捉、封鎖或者忽略,但是,其它的信號可以。所以這是你的終極武器。