Linux 程序管理,就相當於 Windows的工作管理員一樣,在作業系統中,當執行程式或指令都可以產生程序,如 mkdir
、ls
、tar
等指令或是在背景執行。而這些程序有短也有長時間的,但短時間的程序,其實很難去檢視。
ps
又稱為 (Proccess status)。
※ ps
常見參數-a
all
顯示一個終端所有的程序-e
顯示所有程序-f
全格式顯示所有進行中的程序-l
長格式顯示更詳細的資訊-u
顯示程序的歸屬使用者和記憶體佔用情況-x
顯示沒有控制終端的程序
產生程序後,系統會自動賦予一個 PID
,這個 PID
不會重複。
[root@localhost ~]# ps
PID TTY TIME CMD
1557 pts/0 00:00:00 bash
1581 pts/0 00:00:00 ps
PPID
跟 PID
,前者為父程序,後者為子程序。
[root@localhost ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 1557 1552 0 22:15 pts/0 00:00:00 -bash
root 1586 1557 0 22:36 pts/0 00:00:00 ps -f
只能看到當前 Shell 產生的程序。
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1557 1552 0 80 0 - 28888 do_wai pts/0 00:00:00 bash
0 R 0 1589 1557 0 80 0 - 38337 - pts/0 00:00:00 ps
欄位名稱 | 說明 |
---|---|
F | 程序標誌,說明程序的許可權。 1、程序可以被複制,但是不能被執行。 4、程序使用超級使用者許可權。 |
S | 程序狀態,與 STAT 狀態一樣。 |
UID | 執行此程序的使用者的 ID。 |
PID | 程序的 ID。 |
PPID | 父程序的 ID。 |
C | 該程序的 CPU 使用率,單位是百分比。 |
PRI | 程序的優先順序。 |
NI | Nice 值。 |
ADDR | 該程序在記憶體的哪個位置。 |
SZ | 該程序佔用多大記憶體。 |
WCHAN | 該程序是否執行。"-"代表正在執行。 |
TTY | 該程序是在哪個終端執行的,其中tty1 ~ tty7代表本地控制終端。tty1 ~ tty6為字元終端。tty7 為圖形終端。pts/0 ~ 255代表虛擬終端。 |
TIME | 該程序佔用CPU的運算時間。 |
CMD | 程序名。 |
檢視系統中所有的程序
[root@localhost ~]# ps aux
// 或者
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
postfix 1371 0.0 0.2 89808 4056 ? S 22:14 0:00 pickup -l -t unix -u
postfix 1372 0.0 0.2 89876 4072 ? S 22:14 0:00 qmgr -l -t unix -u
root 1552 0.0 0.3 158920 5716 ? Ds 22:15 0:00 sshd: root@pts/0
root 1556 0.0 0.1 72252 2856 ? Ss 22:15 0:00 /usr/libexec/openssh/sftp-server
.........省略...........
每一欄代表的含義:
欄位名稱 | 說明 |
---|---|
USER | 產生該程序的使用者。 |
PID | 程序的 ID。 |
%CPU | 該程序佔用的CPU資源百分比。 |
%MEM | 該程序佔用實體記憶體百分比。 |
VSZ | 該程序佔用虛擬記憶體的大小,單位KB。 |
RSS | 該程序佔用的實際實體記憶體大小,單位KB。 |
TTY | 該程序是在哪個終端執行的,其中tty1 ~ tty7代表本地控制終端。tty1 ~ tty6為字元終端。tty7 為圖形終端。pts/0 ~ 255代表虛擬終端。 |
STAT | 程序狀態。 |
START | 該程序的啟動時間。 |
TIME | 該程序佔用CPU的運算時間。 |
COMMAND | 程序名。 |
STAT:程序狀態
代碼 | 說明 |
---|---|
R | 執行 |
S(大寫) | 睡眠 |
T | 停止狀態 |
s(小寫) | 包含子程序 |
+ | 後台程序 |
※ 用一條槓分開附加指令。
more
指令用來分頁較長的結果。
[root@localhost ~]# ps aux |more
※ grep
指令代表正規表示法。
以正規表示法,檢視包含 pickup
相關的程序名。
[root@localhost ~]# ps aux |grep pickup
postfix 1371 0.0 0.2 89808 4056 ? S 22:14 0:00 pickup -l -t unix -u
root 1622 0.0 0.0 112824 972 pts/0 S+ 23:38 0:00 grep --color=auto pickup
使用 ps
指令雖然可以查詢特定的程序資訊,但無法觀看他的變化。但 top
可以達到持續的資訊。
[root@localhost ~]# top
※ 結束按 q
鍵。
列出的訊息
top - 23:49:29 up 1:35, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1881632 total, 1604976 free, 149128 used, 127528 buff/cache
KiB Swap: 839676 total, 839676 free, 0 used. 1589508 avail Mem