16.1.1 行程與程式
- ·程式 (program):通常為 binary program ,放置在儲存媒體中 (如硬碟、光碟、軟盤、磁帶等), 為物體文 件的型態存在;
- ·行程 (process):程式被觸發后,執行者的權限與屬性、程式的程式代碼與所需資料等都會被加載記憶體中, 作業系統并給予這個記憶體內的單元一個識別符號 (PID),可以說,行程就是一個正在運作中的程式
第一個 bash 的 PID 與第二個 bash 的 PPID 都是 13928 啊, 因為第二個 bash 是來自于第一個所產生的嘛!
常駐在記憶體當中的行程通常都是負責一些系統所提供的功能以服務用戶各項任務,因此這些常駐程式 就會被我們稱為:服務 (daemon),所以,一般 daemon 型別的程式都會加上 d 在檔案名后頭~包括服務器篇我們會看到的 httpd, vsftpd,
16.3.1 行程的觀察
ps :將某個時間點的行程運作情況擷取下來,
[root@study ~]# ps aux <==觀察系統所有的行程資料 [root@study ~]# ps -lA <==也是能夠觀察所有系統的資料 [root@study ~]# ps axjf <==連同部分行程樹狀態
選項與引數:
-A :所有的 process 均顯示出來,與 -e 具有同樣的效用;
-a :不與 terminal 有關的所有 process ;
-u :有效使用者 (effective user) 相關的 process ;
x :通常與 a 這個引數一起使用,可列出較完整資訊,
輸出格式規劃:
l :較長、較詳細的將該 PID 的的資訊列出;
j :作業的格式 (jobs format)
-f :做一個更為完整的輸出,
常用的:
一個是只能查閱自己 bash 行程的『 ps -l 』
一個則是可 以查閱所有系統運作的行程『 ps aux 』!
[agan@localhost root]$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 1000 1971 1970 0 80 0 - 28862 do_wai pts/0 00:00:00 bash 0 R 1000 2013 1971 0 80 0 - 38312 - pts/0 00:00:00 ps
S:代表這個行程的狀態 (STAT),主要的狀態有:
- § R (Running):該程式正在運作中;
- § S (Sleep):該程式目前正在睡眠狀態(idle),但可以被喚醒(signal),
- § D :不可被喚醒的睡眠狀態,通常這支程式可能在等待 I/O 的情況(ex>列印)
- § T :停止狀態(stop),可能是在作業控制(背景暫停)或除錯 (traced) 狀態;
- § Z (Zombie):僵尸狀態,行程已經終止但卻無法被移除至記憶體外,
- PRI/NI:Priority/Nice 的縮寫,代表此行程被 CPU 所執行的優先級,數值越小代表該行程越快被 CPU 執行
- ADDR/SZ/WCHAN:都與記憶體有關,ADDR 是 kernel function,指出該行程在記憶體的哪個部分,如果是個 running 的行程,一般就會顯示『 - 』 / SZ 代表此行程用掉多少記憶體 / WCHAN 表示目前行程是否運作中, 同樣的, 若為 - 表示正在運作中,
- TIME:使用掉的 CPU 時間,注意,是此行程實際花費 CPU 運作的時間,而不是系統時間;
[agan@localhost root]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 127952 6516 ? Ss 05:01 0:01 /usr/lib/systemd/systemd --switched-root --system --d root 2 0.0 0.0 0 0 ? S 05:01 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 05:01 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 05:01 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 05:01 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_sched]
- § VSZ :該 process 使用掉的虛擬記憶體量 (Kbytes)
- § RSS :該 process 占用的固定的記憶體量 (Kbytes)
- § TTY :該 process 是在那個終端機上面運作,若與終端機無關則顯示 ?,另外, tty1-tty6 是本機上面的登 入者行程,若為 pts/0 等等的,則表示為由網路連接進主機的行程,
- § STAT:該行程目前的狀態,狀態顯示與 ps -l 的 S 旗標相同 (R/S/T/Z)
top:動態觀察行程的變化
[root@localhost ~]# top [-d 數字] | top [-bnp]
- -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 - 17:53:08 up 12:51, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863104 total, 1569792 free, 142924 used, 150388 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1561264 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 127952 6516 4104 S 0.0 0.3 0:01.36 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.74 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 0:00.26 watchdog/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.36 watchdog/1
依次顯示資訊:
1->當前時間、開機時間、同時使用用戶數,系統在 1, 5, 15 分鐘的平均作業負載,
2->顯示的是目前行程的總量與個別行程在什么狀態(running, sleeping, stopped, zombie)
3->顯示的是 CPU 的整體負載
4、5->表示目前的物理記憶體與虛擬記憶體 (Mem/Swap) 的使用情況
6->輸入指令,顯示狀態的地方
范例二:將 top 的資訊進行 2 次,然后將結果輸出到 /tmp/top.txt
[root@study ~]# top -b -n 2 > /tmp/top.tx
范例三:我們自己的 bash PID 可由 $$ 變數取得,請使用 top 持續觀察該 PID [root@study ~]# echo $$ 14836 <==就是這個數字!他是我們 bash 的 PID [root@study ~]# top -d 2 -p 14836 top - 01:00:53 up 6:14, 3 users, load average: 0.00, 0.01, 0.05 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s):0.0 us, 0.1 sy, 0.0 ni, 99.9 id, KiB Mem : 2916388 total, 1839264 free, 0.0 wa, 0.0 hi, 353424 used, 0.0 si, 0.0 st 723700 buff/cache KiB Swap: 1048572 total, 1048572 free, 0 used. 2318848 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14836 root 20 0 116272 3136 1848 S 0.0 0.1 0:00.07 bash
如果覺得記憶體以KB為單位不方便監控,可以按下E,則分別以KB、MB、GB、TB、PB、EB單位顯示
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/145679.html
標籤:Linux
