首頁 > linux教程 > linux熱點 閱讀:0更新時間:2020-12-28 09:51:46

linux 恢復與暫停進程

對于一個運行中的進程,我們可以使用kill -STOP pid命令將其暫停執行,使用kill -CONT pid命令恢復其運行。

下面用一個 test.py 實例說明:

#coding: utf-8
import time
i = 1
while 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 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 信號不能被捕捉、封鎖或者忽略,但是,其它的信號可以。所以這是你的終極武器。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩