對於乙個執行中的程序,我們可以使用kill -stop pid命令將其暫停執行,使用kill -cont pid命令恢復其執行。
下面用乙個例項說明:
1、首先使用tar命令打包/usr目錄:
[root@vps /]# tar zcf usr.tar.gz usr/
開啟乙個新視窗檢視其程序狀態:
程序處於執行狀態(r)[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/
2、使用kill -stop 命令將該程序暫停:
[root@vps ~]# kill -stop 18900
再觀察其狀態:
此刻程序處於暫停狀態了(t)[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/
3、使用kill -cont恢復程序執行
程序恢復執行狀態(r)[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/
附:ps的用法:
程序stat狀態:常用引數
-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:所執行的指令
kill 終止程序有十幾種控制程序的方法,下面是一些常用的方法:d 無法中斷的休眠狀態(通常 io 的程序);
r 正在執行,在可中斷佇列中;
s 處於休眠狀態,靜止狀態;
t 停止或被追蹤,暫停執行;
w 進入記憶體交換(從核心2.6開始無效);
x 死掉的程序;
z 殭屍程序不存在但暫時無法消除;
w: 沒有足夠的記憶體分頁可分配
wchan 正在等待的程序資源;
<: 高優先順序程序
n: 低優先序程序
l: 有記憶體分頁分配並鎖在記憶體內 (即時系統或挨a i/o),即,有些頁被鎖進記憶體
s 程序的領導者(在它之下有子程序);
l 多程序的(使用 clone_thread, 類似 nptl pthreads);
+ 位於後台的程序組;
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 ...