對于一個運行中的進程,我們可以使用kill -STOP pid命令將其暫停執行,使用kill -CONT pid命令恢復其運行。
下面用一個 test.py 實例說明:
#coding: utf-8import timei = 1while True:    i = i + 1    time.sleep(2)    print(i) 打開終端,運行 ps -aux | grep python3,顯示結果如下:
xsj   6774  0.0  0.0  30616  9176 pts/1   S   10:34   0:00 python3 test.py 進程狀態顯示 S 或 R,表示程序在運行
使用kill -STOP 命令將該進程暫停:
xsj   6774  0.0  0.0  30616  9176 pts/1   T   10:34   0:00 python3 test.py 此刻進程處于暫停狀態了(T)
使用kill -CONT 命令將進程恢復:
xsj   6774  0.0  0.0  30616  9176 pts/1   S   10:34   0:00 python3 test.py 進程恢復運行狀態(R 或 S)
附:
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 COMMANDUSER: 行程擁有者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 信號不能被捕捉、封鎖或者忽略,但是,其它的信號可以。所以這是你的終極武器。
新聞熱點
疑難解答