Linux 程序管理

2021-04-08 13:37:48 字數 2965 閱讀 4167

1. linux程序管理工具,包括ps 、pgrep、top、kill 、killall、pkill 等

常用: ps aux 或lax輸出的解釋;

user 程序的屬主;

pid 程序的id;

ppid            父程序;

%cpu 程序占用的cpu百分比;

%mem 占用記憶體的百分比;

ni                 程序的nice值,數值大,表示較少占用cpu時間;

vsz   程序虛擬大小;

rss  駐留中頁的數量;

wchan

tty   終端id

stat 程序狀態

d    uninterruptible sleep (usually io)

r    正在執行可中在佇列中可過行的;

s    處於休眠狀態;

t    停止或被追蹤;

w    進入記憶體交換(從核心2.6開始無效);

x    死掉的程序(從來沒見過);

z    殭屍程序;

<    優先順序高的程序

n    優先順序較低的程序

l    有些頁被鎖進記憶體;

s    程序的領導者(在它之下有子程序);

l    is multi-threaded (using clone_thread, like nptl pthreads do)

+    位於後台的程序組;

wchan 正在等待的程序資源;

start 啟動程序的時間;

time 程序消耗cpu的時間;

command 命令的名稱和引數;

2.終止程序的工具 kill 、killall、pkill、xkill;

終止乙個程序或終止乙個正在執行的程式,一般是通過 kill 、killall、pkill、xkill

等進行。比如乙個程式已經死掉,但又不能退出,這時就應該考慮應用這些工具。

另外應用的場合就是在伺服器管理中,在不涉及資料庫伺服器程式的父程序的停止執行,也可以用這些工具來

終止。為什麼資料庫伺服器的父程序不能用這些工具殺死呢?原因很簡單,這些工具在強行終止資料庫伺服器時,

會讓資料庫產生更多的檔案碎片,當碎片達到一定程度的時候,資料庫就有崩潰的危險。比如mysql伺服器

最好是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld 這樣危險的動作;

當然對於占用資源過多的資料庫子程序,我們應該用kill 來殺掉。

kill [訊號**] pid ;強制退出用kill -9 pid

killall 正在執行的程式名

pkill 正在執行的程式名

xkill 呼叫乙個圖形介面程式,用來終止圖形介面程式

3. top 監視系統任務的工具;

和ps 相比,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時間,包括已死的子程序;

互動式命令鍵位:

4.程序的優先順序:nice和renice;

在linux作業系統中,程序之間是竟爭資源(比如cpu和記憶體的占用)關係。這個竟爭優劣是通過乙個數值來

實現的,也就是謙讓度。高謙讓度表示程序優化級別最低。負值或0表示對高優點級,對其它程序不謙讓,

也就是擁有優先占用系統資源的權利。謙讓度的值從-20到19。

目前硬體技術發展極速,在大多情況下,不必設定程序的優先順序,除非在程序失控而瘋狂占用資源的情況下,

我們有可能來設定一下優先順序,但我個人感覺沒有太大的必要,在迫不得已的情況下,我們可以殺掉失控程序。

nice 可以在建立程序時,為程序指定謙讓度的值,程序的優先順序的值是父程序shell的優先順序的值與我們

所指定謙讓度的相加和。所以我們在用nice設定程式的優先順序時,所指定數值是乙個增量,並不是優先順序的絕對值;

nice 的應用舉例:

[root@localhost ~]# nice -n 5 gaim &

注:執行gaim程式,並為它指定謙讓度增量為5;

所以nice的最常用的應用就是:

nice -n 謙讓度的增量值 程式

renice 是通過程序id(pid)來改變謙讓度,進而達到更改程序的優先順序。

renice 謙讓度 pid

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

4 0 4437 3419 10 -5 120924 20492 - s< pts/0 0:01 gaim

0 0 4530 3419 10 -5 5160 708 - r<+ pts/0 0:00 grep gaim

renice 所設定的謙讓度就是程序的絕對值;看下面的例子;

[root@localhost ~]# renice -6 4437

4437: old priority -5, new priority -6

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

4 0 4437 3419 14 -6 120924 20492 - s< pts/0 0:01 gaim

0 0 4534 3419 11 -5 5160 708 - r<+ pts/0 0:00 grep gaim

LINUX程序管理

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

linux程序管理

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

Linux程序管理( )

一 程序的型別 可以將執行在linux系統中的程序分為三種不同的型別 互動程序 由乙個shell啟動的程序。互動程序既可以在前台執行,也可以在後台 執行。二 程序的啟動方式 手工啟動 前台啟動 是手工啟動乙個程序的最常用的方式。一般地,使用者鍵入乙個命令 ls l 這就已經啟動了乙個程序,而且是乙個...