linux程序管理(二)

2022-03-23 15:47:31 字數 4684 閱讀 6804

終止程序的工具killkillallpkill

終止乙個程序或終止乙個正在執行的程式,一般是通過 kill 、killall、pkill、xkill 等進行。比如乙個程式已經死掉,但又不能退出,這時就應該考慮應用這些工具。

另外應用的場合就是在伺服器管理中,在不涉及資料庫伺服器程式的父程序的停止執行,也可以用這些工具來終止。為什麼資料庫伺服器的父程序不能用這些工具殺死呢?原因很簡單,這些工具在強行終止資料庫伺服器時,會讓資料庫產生更多的檔案碎片,當碎片達到一定程度的時候,資料庫就有崩潰的危險。比如mysql伺服器最好是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld 這樣危險的動作;當然對於占用資源過多的資料庫子程序,我們應該用kill 來殺掉。

kill的應用是和ps 或pgrep 命令結合在一起使用的;

kill的用法:

kill [訊號**]   程序id

注:訊號**可以省略;我們常用的訊號**是 -9 ,表示強制終止;

我們檢視httpd 伺服器的程序;您也可以用pgrep -l httpd 來檢視;

我們看上面例子中的第二列,就是程序pid的列,其中4830是httpd伺服器的父程序,從4833-4840的程序都是它4830的子程序;如果我們殺掉父程序4830的話,其下的子程序也會跟著死掉;

[root@localhost ~]# kill 4840

注:殺掉4840這個程序;

[root@localhost ~]# ps -auxf |grep httpd 注:檢視一下會有什麼結果?是不是httpd伺服器仍在執行?

[root@localhost ~]# kill 4830

注:殺掉httpd的父程序;

[root@localhost ~]# ps -aux |grep httpd 注:檢視httpd的其它子程序是否存在,httpd伺服器是否仍在執行?

比如乙個程式已經徹底死掉,如果kill 不加訊號強度是沒有辦法退出,最好的辦法就是加訊號強度 -9 ,後面要接殺父程序;比如;

[root@localhost ~]# ps aux |grep gaim

beinan

5031

9.02.3

104996

17484 ? s 13:23

0:01

gaim

root

5036

0.00.0

5160

724 pts/3 s+ 13:24

0:00

grep gaim

或[root@localhost ~]# pgrep -l gaim

5031

gaim

[root@localhost ~]# kill -9

5031

用法:killall 正在執行的程式名

killall 也和ps或pgrep 結合使用,比較方便;通過ps或pgrep 來檢視哪些程式在執行;

舉例:

[root@localhost beinan]# pgrep -l gaim

2979

gaim

[root@localhost beinan]# killall gaim

pkill 和killall 應用方法差不多,也是直接殺死執行中的程式;如果您想殺掉單個程序,請用kill 來殺掉。

應用方法:

#pkill  正在執行的程式名

舉例:

[root@localhost beinan]# pgrep -l gaim

2979

gaim

[root@localhost beinan]# pkill gaim

和ps 相比,top是動態監視系統任務的工具,top 輸出的結果是連續的;

top呼叫方法:

top 選擇引數

引數:

-b  以批量模式執行,但不能接受命令行輸入;

-c 顯示命令列,而不僅僅是命令名;

-d n 顯示兩次重新整理時間的間隔,比如 -d 5

,表示兩次重新整理間隔為5秒;

-i 禁止顯示空閒程序或殭屍程序;

-n num 顯示更新次數,然後退出。比如 -n 5

,表示top更新5次資料就退出;

-p pid 僅監視指定程序的id;pid是乙個數值;

-q 不經任何延時就重新整理;

-s 安全模式執行,禁用一些效互指令;

-s 累積模式,輸出每個程序的總的cpu時間,包括已死的子程序;

互動式命令鍵位:

space  立即更新;

c 切換到命令名顯示,或顯示整個命令(包括引數);

f,f 增加顯示字段,或刪除顯示字段;

h,?顯示有關安全模式及累積模式的幫助資訊;

k 提示輸入要殺死的程序id,目的是用來殺死該程序(默人訊號為15)

i 禁止空閒程序和殭屍程序;

l 切換到顯法負載平均值和正常執行的時間等資訊;

m 切換到記憶體資訊,並以記憶體占用大小排序;

n 提示顯示的程序數,比如輸入3,就在整屏上顯示3個程序;

o,o 改變顯示欄位的順序;

r 把renice 應用到乙個程序,提示輸入pid和renice的值;

s 改變兩次重新整理時間間隔,以秒為單位;

t 切換到顯示程序和cpu狀態的資訊;

a 按程序生命大小進行排序,最新程序顯示在最前;

m 按記憶體占用大小排序,由大到小;

n 以程序id大小排序,由大到小;

p 按cpu占用情況排序,由大到小

s 切換到累積時間模式;

t 按時間/累積時間對任務排序;

w 把當前的配置寫到~/.toprc中;

[root@localhost ~]# top

然後根據前面所說互動命令按個嘗試一下就明白了,比如按m,就按記憶體占用大小排序

當然您可以把top的輸出傳到乙個檔案中;

[root@localhost ~]# top > mytop.txt

然後我們就可以檢視mytop檔案,以慢慢的分析系統程序狀態;

LINUX程序管理

1.程序是什麼?乙個程序就是出於執行期的程式,包括 可執行程式 段 開啟的檔案,掛起的訊號,核心內部資料,處理器狀態,位址空間,乙個或多個執行執行緒,當然還包括用來存放全域性變數的資料段,等等.2.什麼是執行緒?它和程序的關係是什麼樣的?執行緒在linux中具體是怎麼樣實現的?是在程序中活動的物件,...

linux程序管理

程序的監控 使用ps aux 檢視當前所有程序。可以使用top檢視當前程序自動更新列表,在top中m 按記憶體大小排列,p 按cpu佔用率排列 終止和管理程序 程序之間通過訊號來進行通訊 top和kill都用於向程序傳送訊號。kill l顯示訊號編號表。kill 9 pid kill pid 向pi...

Linux 程序管理

1.linux程序管理工具,包括ps pgrep top kill killall pkill 等 常用 ps aux 或lax輸出的解釋 user 程序的屬主 pid 程序的id ppid 父程序 cpu 程序占用的cpu百分比 mem 占用記憶體的百分比 ni 程序的nice值,數值大,表示較少...