linux 恢復與暫停程序

2021-08-16 22:23:51 字數 2863 閱讀 1929

對於乙個執行中的程序,我們可以使用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.00.0

30616

9176 pts/1 s 10:34

0:00 python3 test.py

程序狀態顯示 s 或 r,表示程式在執行

使用kill -stop 命令將該程序暫停:

xsj   6774

0.00.0

30616

9176 pts/1 t 10:34

0:00 python3 test.py

此刻程序處於暫停狀態了(t)

使用kill -cont 命令將程序恢復:

xsj   6774

0.00.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 訊號不能**捉、封鎖或者忽略,但是,其它的訊號可以。所以這是你的終極**。

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 開啟...

linux中線程的掛起與恢復(程序暫停)

今天在網上查了一下linux中對程序的掛起與恢復的實現,相關資料少的可憐,大部分都是貼上複製。也沒有完整詳細的 故自己整理了一下 程式流程為 主線程建立子執行緒 當前子執行緒狀態為stop停止狀態 5秒後主執行緒喚醒子執行緒,10秒後主執行緒掛起子執行緒,15秒後主執行緒再次喚醒子執行緒,20秒後主...

linux中線程的掛起與恢復(程序暫停)

今 天在網上查了一下 linux中對程序的掛起與恢復的實現,相關資料少的可憐,大部分都是貼上複製。也沒有完整詳細的 故自己整理了一下 程式流程為 主線程建立子執行緒 當前子執行緒狀態為stop停止狀態 5秒後主執行緒喚醒子執行緒,10秒後主執行緒掛起子執行緒,15秒後主執行緒再次喚醒子執行緒,20秒...