linux暫停乙個在執行中的程序

2021-08-20 02:25:29 字數 2927 閱讀 5426

對於乙個執行中的程序,我們可以使用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.70.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.40.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.50.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 訊號不能**捉、封鎖或者忽略,但是,其它的訊號可以。所以這是你的終極**。

Oracle停掉乙個正在執行的job

今天碰到乙個這個問題,由於乙個job執行的時間過長,所以打算將其分為幾塊去執行,這個job又是每天按時執行的。下面來看怎麼實現 第一步 檢視正在執行的jobs sql select fromdba jobs running 然後確定你要停止的job,這個資料字典對應的job就是下面要執行的過程的第乙...

c 中怎樣判斷乙個程式是否正在執行?

我寫了兩個程式,其中程式2想判斷程式1是否正在執行 這兩個程式沒有任何聯絡 謝謝啊 if system.diagnostics.process.getprocessesbyname 要獲取的程式在程序中的稱 tolist count 0 else stringname 程序名 if getpidby...

獲得乙個程式在執行時的路徑

string fullfilename code taken from std string path pid t pid getpid char buf 20 sprintf buf,d pid std string link proc char proc 512 int ch readlink ...