CentOS学习笔记--程序管理
程序管理
一個程序被加載到內存當中運行,那么在內存內的那個數據就被稱為程序(process)。程序是操作系統上非常重要的概念, 所有系統上面跑的數據都會以程序的型態存在。那么系統的程序有哪些狀態?不同的狀態會如何影響系統的運行? 程序之間是否可以互相控管等等的,這些都是我們所必須要知道的項目。本節節選自鳥哥的 Linux 私房菜 -- 基礎學習篇目錄 第十七章、程序管理與 SELinux 初探
什么是程序 (process)
- 程序 (program):通常為 binary program ,放置在儲存媒體中 (如硬盤、光盤、軟盤、磁帶等), 為實體文件的型態存在;
- 程序 (process):程序被觸發后,運行者的權限與屬性、程序的程序碼與所需數據等都會被加載內存中, 操作系統并給予這個內存內的單元一個識別碼 (PID),可以說,程序就是一個正在運行中的程序。
子程序與父程序:
當我們登陸系統后,會取得一個 bash 的 shell ,然后,我們用這個 bash 提供的介面去運行另一個命令,例如 /usr/bin/passwd 或者是 touch 等等,那些另外運行的命令也會被觸發成為 PID ,呵呵!那個后來運行命令才產生的 PID 就是『子程序』了,而在我們原本的 bash 環境下,就稱為『父程序』了!
例題:
請在目前的 bash 環境下,再觸發一次 bash ,并以『 ps -l 』這個命令觀察程序相關的輸出資訊。
答:
直接運行 bash ,會進入到子程序的環境中,然后輸入 ps -l 后,出現:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 8074 8072 2 76 0 - 1287 wait pts/1 00:00:00 bash 0 S 0 8102 8074 4 76 0 - 1287 wait pts/1 00:00:00 bash 4 R 0 8118 8102 0 78 0 - 1101 - pts/1 00:00:00 ps有看到那個 PID 與 PPID 嗎?第一個 bash 的 PID 與第二個 bash 的 PPID 都是 8074 啊, 因為第二個 bash 是來自於第一個所產生的嘛!另外,每部主機的程序啟動狀態都不一樣, 所以在你的系統上面看到的 PID 與我這里的顯示一定不同!那是正常的!詳細的 ps 命令我們會在本章稍后介紹, 這里你只要知道 ps -l 可以查閱到相關的程序資訊即可。
很多朋友常常會發現:『咦!明明我將有問題的程序關閉了,怎么過一陣子他又自動的產生? 而且新產生的那個程序的 PID 與原先的還不一樣,這是怎么回事呢?』不要懷疑,如果不是 crontab 工作排程的影響,肯定有一支父程序存在,所以你殺掉子程序后, 父程序就會主動再生一支!那怎么辦?正所謂這:『擒賊先擒王』,找出那支父程序,然后將他刪除就對啦!
程序的觀察
既然程序這么重要,那么我們如何查閱系統上面正在運行當中的程序呢?很簡單啊! 利用靜態的 ps 或者是動態的 top,還能以 pstree 來查閱程序樹之間的關系喔!
- ps :將某個時間點的程序運行情況擷取下來 [root@www ~]# ps aux <==觀察系統所有的程序數據
[root@www ~]# ps -lA <==也是能夠觀察所有系統的數據
[root@www ~]# ps axjf <==連同部分程序樹狀態
選項與參數:
-A :所有的 process 均顯示出來,與 -e 具有同樣的效用;
-a :不與 terminal 有關的所有 process ;
-u :有效使用者 (effective user) 相關的 process ;
x :通常與 a 這個參數一起使用,可列出較完整資訊。
輸出格式規劃:
l :較長、較詳細的將該 PID 的的資訊列出;
j :工作的格式 (jobs format)
-f :做一個更為完整的輸出。
- 僅觀察自己的 bash 相關程序: ps -l 范例一:將目前屬於您自己這次登陸的 PID 與相關資訊列示出來(只與自己的 bash 有關) [root@www ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 13639 13637 0 75 0 - 1287 wait pts/1 00:00:00 bash 4 R 0 13700 13639 0 77 0 - 1101 - pts/1 00:00:00 ps
系統整體的程序運行是非常多的,但如果使用 ps -l 則僅列出與你的操作環境 (bash) 有關的程序而已, 亦即最上一級的父程序會是你自己的 bash 而沒有延伸到 init 這支程序去!那么 ps -l 秀出來的數據有哪些呢? 我們就來觀察看看:
- F:代表這個程序旗標 (process flags),說明這個程序的總結權限,常見號碼有:
- 若為 4 表示此程序的權限為 root ;
- 若為 1 則表示此子程序僅進行復制(fork)而沒有實際運行(exec)。
- S:代表這個程序的狀態 (STAT),主要的狀態有:
- R (Running):該程序正在運行中;
- S (Sleep):該程序目前正在睡眠狀態(idle),但可以被喚醒(signal)。
- D :不可被喚醒的睡眠狀態,通常這支程序可能在等待 I/O 的情況(ex>列印)
- T :停止狀態(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態;
- Z (Zombie):僵尸狀態,程序已經終止但卻無法被移除至內存外。
- UID/PID/PPID:代表『此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼』
- C:代表 CPU 使用率,單位為百分比;
- PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所運行的優先順序,數值越小代表該程序越快被 CPU 運行。詳細的 PRI 與 NI 將在下一小節說明。
- ADDR/SZ/WCHAN:都與內存有關,ADDR 是 kernel function,指出該程序在內存的哪個部分,如果是個 running 的程序,一般就會顯示『 - 』 / SZ 代表此程序用掉多少內存 / WCHAN 表示目前程序是否運行中,同樣的, 若為 - 表示正在運行中。
- TTY:登陸者的終端機位置,若為遠程登陸則使用動態終端介面 (pts/n);
- TIME:使用掉的 CPU 時間,注意,是此程序實際花費 CPU 運行的時間,而不是系統時間;
- CMD:就是 command 的縮寫,造成此程序的觸發程序之命令為何。
所以你看到的 ps -l 輸出信息中,他說明的是:『bash 的程序屬於 UID 為 0 的使用者,狀態為睡眠 (sleep), 之所以為睡眠因為他觸發了 ps (狀態為 run) 之故。此程序的 PID 為 13639,優先運行順序為 75 , 下達 bash 所取得的終端介面為 pts/1 ,運行狀態為等待 (wait) 。』這樣已經夠清楚了吧? 您自己嘗試解析一下那么 ps 那一行代表的意義為何呢? ^_^
接下來讓我們使用 ps 來觀察一下系統內所有的程序狀態吧!
觀察系統所有程序: ps aux 范例二:列出目前所有的正在內存當中的程序: [root@www ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2064 616 ? Ss Mar11 0:01 init [5] root 2 0.0 0.0 0 0 ? S< Mar11 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN Mar11 0:00 [ksoftirqd/0] .....(中間省略)..... root 13639 0.0 0.2 5148 1508 pts/1 Ss 11:44 0:00 -bash root 14232 0.0 0.1 4452 876 pts/1 R+ 15:52 0:00 ps aux root 18593 0.0 0.0 2240 476 ? Ss Mar14 0:00 /usr/sbin/atd你會發現 ps -l 與 ps aux 顯示的項目并不相同!在 ps aux 顯示的項目中,各欄位的意義為:
- USER:該 process 屬於那個使用者帳號的?
- PID :該 process 的程序識別碼。
- %CPU:該 process 使用掉的 CPU 資源百分比;
- %MEM:該 process 所占用的實體內存百分比;
- VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
- RSS :該 process 占用的固定的內存量 (Kbytes)
- TTY :該 process 是在那個終端機上面運行,若與終端機無關則顯示 ?,另外, tty1-tty6 是本機上面的登陸者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。
- STAT:該程序目前的狀態,狀態顯示與 ps -l 的 S 旗標相同 (R/S/T/Z)
- START:該 process 被觸發啟動的時間;
- TIME :該 process 實際使用 CPU 運行的時間。
- COMMAND:該程序的實際命令為何?
一般來說,ps aux 會依照 PID 的順序來排序顯示,我們還是以 13639 那個 PID 那行來說明!該行的意義為『 root 運行的 bash PID 為 13639,占用了 0.2% 的內存容量百分比,狀態為休眠 (S),該程序啟動的時間為 11:44 , 且取得的終端機環境為 pts/1 。』與 ps aux 看到的其實是同一個程序啦!這樣可以理解嗎? 讓我們繼續使用 ps 來觀察一下其他的資訊吧!
范例三:以范例一的顯示內容,顯示出所有的程序: [root@www ~]# ps -lA F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 76 0 - 435 - ? 00:00:01 init 1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0 1 S 0 3 1 0 70 -5 - 0 worker ? 00:00:00 events/0 ....(以下省略).... # 你會發現每個欄位與 ps -l 的輸出情況相同,但顯示的程序則包括系統所有的程序。 范例四:列出類似程序樹的程序顯示: [root@www ~]# ps axjf PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 1 1 1 ? -1 Ss 0 0:01 init [5] .....(中間省略).....1 4586 4586 4586 ? -1 Ss 0 0:00 /usr/sbin/sshd4586 13637 13637 13637 ? -1 Ss 0 0:00 \_ sshd: root@pts/1 13637 13639 13639 13639 pts/1 14266 Ss 0 0:00 \_ -bash 13639 14266 14266 13639 pts/1 14266 R+ 0 0:00 \_ ps axjf .....(后面省略)..... 看出來了吧?其實鳥哥在進行一些測試時,都是以網絡連線進主機來測試的,所以羅,你會發現其實程序之間是有相關性的啦! 不過,其實還可以使用 pstree 來達成這個程序樹喔!以上面的例子來看,鳥哥是透過 sshd 提供的網絡服務取得一個程序, 該程序提供 bash 給我使用,而我透過 bash 再去運行 ps axjf ! 范例五:找出與 cron 與 syslog 這兩個服務有關的 PID 號碼? [root@www ~]# ps aux | egrep '(cron|syslog)' root 4286 0.0 0.0 1720 572 ? Ss Mar11 0:00 syslogd -m 0 root 4661 0.0 0.1 5500 1192 ? Ss Mar11 0:00 crond root 14286 0.0 0.0 4116 592 pts/1 R+ 16:15 0:00 egrep (cron|syslog) # 所以號碼是 4286 及 4661 這兩個羅!就是這樣找的啦! 除此之外,我們必須要知道的是『僵尸 (zombie) 』程序是什么? 通常,造成僵尸程序的成因是因為該程序應該已經運行完畢,或者是因故應該要終止了, 但是該程序的父程序卻無法完整的將該程序結束掉,而造成那個程序一直存在內存當中。 如果你發現在某個程序的 CMD 后面還接上 <defunct> 時,就代表該程序是僵尸程序啦,例如: apache 8683 0.0 0.9 83384 9992 ? Z 14:33 0:00 /usr/sbin/httpd <defunct> 當系統不穩定的時候就容易造成所謂的僵尸程序,可能是因為程序寫的不好啦,或者是使用者的操作習慣不良等等所造成。 如果你發現系統中很多僵尸程序時,記得啊!要找出該程序的父程序,然后好好的做個追蹤,好好的進行主機的環境最佳化啊! 看看有什么地方需要改善的,不要只是直接將他 kill 掉而已呢!不然的話,萬一他一直產生,那可就麻煩了!事實上,通常僵尸程序都已經無法控管,而直接是交給 init 這支程序來負責了,偏偏 init 是系統第一支運行的程序, 他是所有程序的父程序!我們無法殺掉該程序的 (殺掉他,系統就死掉了!),所以羅,如果產生僵尸程序, 而系統過一陣子還沒有辦法透過核心非經常性的特殊處理來將該程序刪除時,那你只好透過 reboot 的方式來將該程序抹去了! top:動態觀察程序的變化相對於 ps 是擷取一個時間點的程序狀態, top 則可以持續偵測程序運行的狀態!使用方式如下:
[root@www ~]# top [-d 數字] | top [-bnp] 選項與參數: -d :后面可以接秒數,就是整個程序畫面升級的秒數。默認是 5 秒; -b :以批量的方式運行 top ,還有更多的參數可以使用喔!通常會搭配數據流重導向來將批量的結果輸出成為文件。 -n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。 -p :指定某些個 PID 來進行觀察監測而已。 在 top 運行過程當中可以使用的按鍵命令:? :顯示在 top 當中可以輸入的按鍵命令;P :以 CPU 的使用資源排序顯示;M :以 Memory 的使用資源排序顯示;N :以 PID 來排序喔!T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。k :給予某個 PID 一個訊號 (signal)r :給予某個 PID 重新制訂一個 nice 值。q :離開 top 軟件的按鍵。 接下來讓我們實際觀察一下如何使用 top 與 top 的畫面吧! 范例一:每兩秒鐘升級一次 top ,觀察整體資訊: [root@www ~]# top -d 2 top - 17:03:09 up 7 days, 16:16, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie Cpu(s): 0.5%us, 0.5%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 742664k total, 681672k used, 60992k free, 125336k buffers Swap: 1020088k total, 28k used, 1020060k free, 311156k cached<==如果加入 k 或 r 時,就會有相關的字樣出現在這里喔!PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14398 root 15 0 2188 1012 816 R 0.5 0.1 0:00.05 top1 root 15 0 2064 616 528 S 0.0 0.1 0:01.38 init2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/03 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0top 也是個挺不錯的程序觀察工具!但不同於 ps 是靜態的結果輸出, top 這個程序可以持續的監測整個系統的程序工作狀態。 在默認的情況下,每次升級程序資源的時間為 5 秒,不過,可以使用 -d 來進行修改。 top 主要分為兩個畫面,上面的畫面為整個系統的資源使用狀態,基本上總共有六行,顯示的內容依序是:
- 第一行(top...):這一行顯示的資訊分別為:
- 目前的時間,亦即是 17:03:09 那個項目;
- 啟動到目前為止所經過的時間,亦即是 up 7days, 16:16 那個項目;
- 已經登陸系統的使用者人數,亦即是 1 user項目;
- 系統在 1, 5, 15 分鐘的平均工作負載。我們在第十六章談到的 batch 工作方式為負載小於 0.8 就是這個負載羅!代表的是 1, 5, 15 分鐘,系統平均要負責運行幾個程序(工作)的意思。 越小代表系統越閑置,若高於 1 得要注意你的系統程序是否太過繁復了!
- 第二行(Tasks...):顯示的是目前程序的總量與個別程序在什么狀態(running, sleeping, stopped, zombie)。 比較需要注意的是最后的 zombie 那個數值,如果不是 0 !好好看看到底是那個 process 變成僵尸了吧?
- 第三行(Cpus...):顯示的是 CPU 的整體負載,每個項目可使用 ? 查閱。需要特別注意的是 %wa ,那個項目代表的是 I/O wait, 通常你的系統會變慢都是 I/O 產生的問題比較大!因此這里得要注意這個項目耗用 CPU 的資源喔! 另外,如果是多核心的設備,可以按下數字鍵『1』來切換成不同 CPU 的負載率。
- 第四行與第五行:表示目前的實體內存與虛擬內存 (Mem/Swap) 的使用情況。 再次重申,要注意的是 swap 的使用量要盡量的少!如果 swap 被用的很大量,表示系統的實體內存實在不足!
- 第六行:這個是當在 top 程序當中輸入命令時,顯示狀態的地方。
至於 top 下半部分的畫面,則是每個 process 使用的資源情況。比較需要注意的是:
- PID :每個 process 的 ID 啦!
- USER:該 process 所屬的使用者;
- PR :Priority 的簡寫,程序的優先運行順序,越小越早被運行;
- NI :Nice 的簡寫,與 Priority 有關,也是越小越早被運行;
- %CPU:CPU 的使用率;
- %MEM:內存的使用率;
- TIME+:CPU 使用時間的累加;
top 默認使用 CPU 使用率 (%CPU) 作為排序的重點,如果你想要使用內存使用率排序,則可以按下『M』, 若要回復則按下『P』即可。如果想要離開 top 則按下『 q 』吧!如果你想要將 top 的結果輸出成為文件時, 可以這樣做:
范例二:將 top 的資訊進行 2 次,然后將結果輸出到 /tmp/top.txt [root@www ~]# top -b -n 2 > /tmp/top.txt # 這樣一來,嘿嘿!就可以將 top 的資訊存到 /tmp/top.txt 文件中了。- pstree
如果要找程序之間的相關性,這個 pstree 真是好用到不行!直接輸入 pstree 可以查到程序相關性,如上表所示,還會使用線段將相關性程序連結起來哩! 一般連結符號可以使用 ASCII 碼即可,但有時因為語系問題會主動的以 Unicode 的符號來連結, 但因為可能終端機無法支持該編碼,或許會造成亂碼問題。因此可以加上 -A 選項來克服此類線段亂碼問題。
程序的管理
- kill -signal PID
kill 可以幫我們將這個 signal 傳送給某個工作 (%jobnumber) 或者是某個 PID (直接輸入數字)。 要再次強調的是: kill 后面直接加數字與加上 %number 的情況是不同的! 這個很重要喔!因為工作控制中有 1 號工作,但是 PID 1 號則是專指『 init 』這支程序!你怎么可以將 init 關閉呢? 關閉 init ,你的系統就當掉了啊!所以記得那個 % 是專門用在工作控制的喔! 我們就活用一下 kill 與剛剛上面提到的 ps 來做個簡單的練習吧!
例題: 以 ps 找出 syslog 這個程序的 PID 后,再使用 kill 傳送信息,使得 syslog 可以重新讀取配置檔。 答: 由於需要重新讀取配置檔,因此 signal 是 1 號。至於找出 syslog 的 PID 可以是這樣做: ps aux | grep 'syslog' | grep -v 'grep'| awk '{print $2}' 接下來則是實際使用 kill -1 PID,因此,整串命令會是這樣: kill -SIGHUP $(ps aux|grep 'syslog'|grep -v 'grep'|awk '{print $2}') 如果要確認有沒有重新啟動 syslog ,可以參考登錄檔的內容,使用如下命令查閱: tail -5 /var/log/messages 如果你有看到類似『Mar 19 15:08:20 www syslogd 1.4.1: restart』之類的字樣,就是表示 syslogd 在 3/19 有重新啟動 (restart) 過了!- killall -signal 命令名稱
由於 kill 后面必須要加上 PID (或者是 job number),所以,通常 kill 都會配合 ps, pstree 等命令,因為我們必須要找到相對應的那個程序的 ID 嘛!但是,如此一來,很麻煩~有沒有可以利用『下達命令的名稱』來給予訊號的?舉例來說,能不能直接將 syslog 這個程序給予一個 SIGHUP 的訊號呢?可以的!用 killall 吧!
[root@www ~]# killall [-iIe] [command name] 選項與參數: -i :interactive 的意思,互動式的,若需要刪除時,會出現提示字節給使用者; -e :exact 的意思,表示『后面接的 command name 要一致』,但整個完整的命令不能超過 15 個字節。 -I :命令名稱(可能含參數)忽略大小寫。范例一:給予 syslogd 這個命令啟動的 PID 一個 SIGHUP 的訊號 [root@www ~]# killall -1 syslogd # 如果用 ps aux 仔細看一下,syslogd 才是完整的命令名稱。但若包含整個參數, # 則 syslogd -m 0 才是完整的呢! 范例二:強制終止所有以 httpd 啟動的程序 [root@www ~]# killall -9 httpd 范例三:依次詢問每個 bash 程序是否需要被終止運行! [root@www ~]# killall -i -9 bash Kill bash(16905) ? (y/N) n <==這個不殺! Kill bash(17351) ? (y/N) y <==這個殺掉! # 具有互動的功能!可以詢問你是否要刪除 bash 這個程序。要注意,若沒有 -i 的參數, # 所有的 bash 都會被這個 root 給殺掉!包括 root 自己的 bash 喔! ^_^總之,要刪除某個程序,我們可以使用 PID 或者是啟動該程序的命令名稱, 而如果要刪除某個服務呢?呵呵!最簡單的方法就是利用 killall , 因為他可以將系統當中所有以某個命令名稱啟動的程序全部刪除。 舉例來說,上面的范例二當中,系統內所有以 httpd 啟動的程序,就會通通的被刪除啦! ^_^
系統資源的觀察
- free :觀察內存使用情況 [root@www ~]# free [-b|-k|-m|-g] [-t] 選項與參數: -b :直接輸入 free 時,顯示的單位是 Kbytes,我們可以使用 b(bytes), m(Mbytes)k(Kbytes), 及 g(Gbytes) 來顯示單位喔! -t :在輸出的最終結果,顯示實體內存與 swap 的總量。范例一:顯示目前系統的內存容量 [root@www ~]# free -m total used free shared buffers cached Mem: 725 666 59 0 132 287 -/+ buffers/cache: 245 479 Swap: 996 0 996 仔細看看,我的系統當中有 725MB 左右的實體內存,我的 swap 有 1GB 左右, 那我使用 free -m 以 MBytes 來顯示時,就會出現上面的資訊。Mem 那一行顯示的是實體內存的量, Swap 則是虛擬內存的量。 total 是總量, used 是已被使用的量, free 則是剩余可用的量。
- uname:查閱系統與核心相關資訊 [root@www ~]# uname [-asrmpi] 選項與參數: -a :所有系統相關的資訊,包括底下的數據都會被列出來; -s :系統核心名稱 -r :核心的版本 -m :本系統的硬件名稱,例如 i686 或 x86_64 等; -p :CPU 的類型,與 -m 類似,只是顯示的是 CPU 的類型! -i :硬件的平臺 (ix86)范例一:輸出系統的基本資訊 [root@www ~]# uname -a Linux www.vbird.tsai 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686 i686 i386 GNU/Linux
- uptime:觀察系統啟動時間與工作負載 [root@www ~]# uptime15:39:13 up 8 days, 14:52, 1 user, load average: 0.00, 0.00, 0.00 # top 這個命令已經談過相關資訊,不再聊!
- netstat :追蹤網絡或插槽檔 [root@www ~]# netstat -[atunlp] 選項與參數: -a :將目前系統上所有的連線、監聽、Socket 數據都列出來 -t :列出 tcp 網絡封包的數據 -u :列出 udp 網絡封包的數據 -n :不以程序的服務名稱,以埠號 (port number) 來顯示; -l :列出目前正在網絡監聽 (listen) 的服務; -p :列出該網絡服務的程序 PID 范例一:列出目前系統已經創建的網絡連線與 unix socket 狀態 [root@www ~]# netstat Active Internet connections (w/o servers) <==與網絡較相關的部分 Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 132 192.168.201.110:ssh 192.168.:vrtl-vmf-sa ESTABLISHED Active UNIX domain sockets (w/o servers) <==與本機的程序自己的相關性(非網絡) Proto RefCnt Flags Type State I-Node Path unix 20 [ ] DGRAM 9153 /dev/log unix 3 [ ] STREAM CONNECTED 13317 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 13233 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 13208 /tmp/.font-unix/fs7100 ....(中間省略)....
- dmesg :分析核心產生的信息 范例一:輸出所有的核心啟動時的資訊 [root@www ~]# dmesg | more 范例二:搜尋啟動的時候,硬盤的相關資訊為何? [root@www ~]# dmesg | grep -i hdide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMAide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio hda: IC35L040AVER07-0, ATA DISK drive hdb: ASUS DRW-2014S1, ATAPI CD/DVD-ROM drive hda: max request size: 128KiB ....(底下省略)....
- vmstat :偵測系統資源變化 [root@www ~]# vmstat [-a] [延遲 [總計偵測次數]] <==CPU/內存等資訊 [root@www ~]# vmstat [-fs] <==內存相關 [root@www ~]# vmstat [-S 單位] <==配置顯示數據的單位 [root@www ~]# vmstat [-d] <==與磁碟有關 [root@www ~]# vmstat [-p 分割槽] <==與磁碟有關 選項與參數: -a :使用 inactive/active(活躍與否) 取代 buffer/cache 的內存輸出資訊; -f :啟動到目前為止,系統復制 (fork) 的程序數; -s :將一些事件 (啟動至目前為止) 導致的內存變化情況列表說明; -S :后面可以接單位,讓顯示的數據有單位。例如 K/M 取代 bytes 的容量; -d :列出磁碟的讀寫總量統計表 -p :后面列出分割槽,可顯示該分割槽的讀寫總量統計表范例一:統計目前主機 CPU 狀態,每秒一次,共計三次! [root@www ~]# vmstat 1 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r b swpd free buff cache si so bi bo in cs us sy id wa st0 0 28 61540 137000 291960 0 0 4 5 38 55 0 0 100 0 00 0 28 61540 137000 291960 0 0 0 0 1004 50 0 0 100 0 00 0 28 61540 137000 291964 0 0 0 0 1022 65 0 0 100 0 0
轉載于:https://www.cnblogs.com/ysztcn/p/4179592.html
總結
以上是生活随笔為你收集整理的CentOS学习笔记--程序管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 辉光UIView的category
- 下一篇: 2014-11-25nbsp;11:26