2018年10月27日 星期六

程序管理Process control

& 將現在的工作放在背景執行
vi xxx.txt &

% 執行最近一次放在背景的工作

bg 列出在背景作業的工作
bg CTRL-z 將現在的工作停止及放在背景工作列

Fg [%n] 再次執行一個特定的背景工作

fg 1 jobs 列出在背景作業的工作
jobs


ps
ps -aux
ps -A (注意:A一定要大寫)這是螢幕上會列出所有當前正在運行的程式的列表:第一列是當前程式的ID號,最後一列是程式名。下面你所要做的就是輸入:Kill -9 ID(其中的ID就是你要終止運行的程式的ID號),然後該程式就會被關掉了。
使用權限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:
ps 的參數非常多, 在此僅列出幾個常用的參數並大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
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: 不可中斷的靜止 (通悸□□縝b進行 I/O 動作)
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O)
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令
範例:
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........


top
使用權限:所有使用者
使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
說明:即時顯示 process 的動態
d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的許可權,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 "n" 參數一起使用,可以用來將 top 的結果輸出到檔案內
範例:
顯示更新十次後退出 ;
top -n 10
使用者將不能利用交談式指令來對行程下命令 :
top -s
將更新顯示二次的結果輸入到名稱爲 top.log 的檔案裏 :
top -n 2 -b < top.log


kill
kill [%n] 清除一個特定的工作
kill -9 2345

使用權限:所有使用者
使用方式:
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
說明:kill 送出一個特定的信號 (signal) 給行程 id 爲 pid 的行程根據該信號而做特定的動作, 若沒有指定, 預設是送出終止 (TERM) 的信號
-s (signal) : 其中可用的訊號有 HUP (1), KILL (9), TERM (15), 分別代表著重跑, 砍掉, 結束; 詳細的信號可以用 kill -l
-p : 印出 pid , 並不送出信號
-l (signal) : 列出所有可用的信號名稱
範例:
將 pid 爲 323 的行程砍掉 (kill) :
kill -9 323
將 pid 爲 456 的行程重跑 (restart) :
kill -HUP 456


skill
使用權限:所有使用者
使用方式: skill [signal to send] [options] 選擇程式的規則
說明:
送個訊號給正在執行的程式,預設的訊息爲 TERM (中斷) , 較常使用的訊息爲 HUP , INT , KILL , STOP , CONT ,和 0
訊息有三種寫法:分別爲 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的訊息。
一般參數:
-f 快速模式/尚未完成
-i 互動模式/ 每個動作將要被確認
-v 詳細輸出/ 列出所選擇程式的資訊
-w 智慧警告訊息/ 尚未完成
-n 沒有動作/ 顯示程式代號
參數:選擇程式的規則可以是, 終端機代號,使用者名稱,程式代號,命令名稱。
-t 終端機代號 ( tty 或 pty )
-u 使用者名稱
-p 程式代號 ( pid )
-c 命令名稱 可使用的訊號:
以下列出已知的訊號名稱,訊號代號,功能。
名稱 (代號) 功能/ 描述
ALRM 14 離開
HUP 1 離開
INT 2 離開
KILL 9 離開/ 強迫關閉
PIPE 13 離開
POLL 離開
PROF 離開
TERM 15 離開
USR1 離開
USR2 離開
VTALRM 離開
STKFLT 離開/ 只適用於i386, m68k, arm 和 ppc 硬體
UNUSED 離開/ 只適用於i386, m68k, arm 和 ppc 硬體
TSTP 停止 /産生與內容相關的行爲
TTIN 停止 /産生與內容相關的行爲
TTOU 停止 /産生與內容相關的行爲
STOP 停止 /強迫關閉
CONT 從新啓動 /如果在停止狀態則從新啓動,否則忽略
PWR 忽略 /在某些系統中會離開
WINCH 忽略
CHLD 忽略
ABRT 6 核心
FPE 8 核心
ILL 4 核心
QUIT 3 核心
SEGV 11 核心
TRAP 5 核心
SYS 核心 /或許尚未實作
EMT 核心 /或許尚未實作
BUS 核心 /核心失敗
XCPU 核心 /核心失敗
XFSZ 核心 /核心失敗
範例:
停止所有在 PTY 裝置上的程式
skill -KILL -v pts/*
停止三個使用者 user1 , user2 , user3
skill -STOP user1 user2 user3
其他相關的命令: kill