Linux 文件系統
常見Linux目錄名稱:
目錄 | 用途 |
---|---|
/ | 虛擬目錄的根目錄。通常不會在這裏存儲文件 |
/bin | 二進制目錄,存放許多用戶級的GUN工具 |
/boot | 啓動目錄,存放啓動文件 |
/dev | 設備目錄,Linux在這裏創建設備節點 |
/etc | 系統配置文件目錄 |
/home | 主目錄,Linux在這裏創建用戶目錄 |
/lib | 庫目錄,存放系統和應用程序的庫文件 |
/media | 媒體目錄,可移動媒體設備的常用掛載點 |
/mnt | 掛載目錄,另一個可移動媒體設備的常用掛載點 |
/opt | 可選目錄,常用於存放第三方軟件包和數據文件 |
/proc | 進程目錄,存放現有硬件及當前進程的相關信息 |
/root | root用戶的主目錄 |
/sbin | 系統二進制目錄,存放許多GUN管理員級工具 |
/run | 運行目錄,存放系統運作時的運行時數據 |
/srv | 服務目錄,存放本地服務的相關文件 |
/sys | 系統目錄,存放系統硬件信息的相關文件 |
/tmp | 臨時目錄,可以在該目錄中創建和刪除臨時工作文件 |
/usr | 用戶二進制目錄,大量用戶級的GUN工具和數據文件都存儲在這裏 |
/var | 可變目錄,用以存放經常變化的文件,比如日誌文件 |
常見的目錄名均基於文件系統層級標準(filesystem hierarchy stanard, FHS)。FHS偶爾會進行更新,可能有些Linux發行版人在使用舊的FHS標準。最新的FHS標準可以訪問其官方主頁:
http://www.pathname.com/fhs
ps 命令查看進程
當程序運行在系統上時,稱之爲進程(process)。要監測這些進程,就需要熟悉ps命令的用法。
默認情況下,ps命令只會顯示運行在當前控制檯下的屬於當前用戶的進程:
$ ps
PID TTY TIME CMD
4763 pts/0 00:00:00 bash
4782 pts/0 00:00:00 ps
$
在這裏,當前用戶只運行了bash shell(注意,shell也只是運行在系統上的另一個進程而已),以及ps命令本身。
Linux系統中使用的GNU ps命令支持3種不同類型的命令行參數:
- Unix風格的參數,前面加單破折線
- BSD風格的參數,前面不加破折線
- GNU風格的長參數,前面加雙破折線
Unix風格的參數
Unix風格的參數是從貝爾實驗室開發的AT&T Unix系統上原有的ps命令繼承下來的。
Unix風格的ps命令參數:
參數 | 描述 |
---|---|
-A | 顯示所有進程 |
-N | 顯示與指示參數不符的所有進程 |
-a | 顯示除控制進程(session leader)和無終端進程外的所有進程 |
-d | 顯示除控制進程外的所有進程 |
-e | 顯示所有進程。應該和-A是一樣的 |
-C cmdlist | 顯示包含在cmdlist列表中的進程 |
-G grplist | 顯示組ID在grplist列表中的進程 |
-U userlist | 顯示屬主的用戶ID在userlist列表中的進程 |
-g grplist | 顯示會話或組ID在grplist列表中的進程 |
-p pidlist | 顯示PID在pidlist列表中的進程 |
-s sesslist | 顯示會話ID在sesslist列表中的進程 |
-t ttylist | 顯示終端ID在ttylist列表中的進程 |
-u userlist | 顯示有效用戶ID在userlist列表中的進程 |
-F | 顯示更多額外輸出(相對-f參數而言) |
-O format | 顯示默認的輸出列以及format列表指定的特定列 |
-M | 顯示進程的安全信息 |
-c | 顯示進程的額外調度器信息 |
-f | 顯示完整格式的輸出 |
-j | 顯示任務信息 |
-l | 顯示長列表 |
-o format | 僅顯示由format指定的列 |
-y | 不要顯示進程標記(process flag,表名進程狀態的標記) |
-Z | 顯示安全標籤(SELinux的security context)信息 |
-H | 用層級格式來顯示進程(樹狀,用來顯示父進程) |
-n namelist | 定義了WCHAN列顯示的值 |
-w | 採用寬輸出模式,不限寬度顯示 |
-L | 顯示進程中的線程 |
-V | 顯示ps命令的版本號 |
命令參數列出了很多,但是不一定全。使用ps命令的關鍵不在於記住多少可用的參數。而是隻要記住最有用的一些參數組合就好了。
ps -ef
查看系統上運行的所有進程:
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:23 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 18:23 ? 00:00:00 [kthreadd]
root 3 2 0 18:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 18:23 ? 00:00:00 [kworker/0:0H]
root 6 2 0 18:23 ? 00:00:00 [kworker/u2:0]
root 7 2 0 18:23 ? 00:00:00 [migration/0]
root 8 2 0 18:23 ? 00:00:00 [rcu_bh]
root 9 2 0 18:23 ? 00:00:00 [rcu_sched]
root 10 2 0 18:23 ? 00:00:00 [lru-add-drain]
......
root 4250 1 0 18:23 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4251 1 0 18:23 ? 00:00:00 /usr/sbin/sshd -D
root 4253 1 0 18:23 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4254 1 0 18:23 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4515 1 0 18:23 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4532 4515 0 18:24 ? 00:00:00 qmgr -l -t unix -u
root 4569 4251 0 18:24 ? 00:00:00 sshd: root@pts/0
root 4763 4569 0 18:24 pts/0 00:00:00 -bash
postfix 4931 4515 0 20:04 ? 00:00:00 pickup -l -t unix -u
root 4938 2 0 20:31 ? 00:00:00 [kworker/0:3]
root 4944 2 0 20:46 ? 00:00:00 [kworker/0:2]
root 4947 2 0 20:51 ? 00:00:00 [kworker/0:0]
root 4949 4763 0 20:53 pts/0 00:00:00 ps -ef
$
每列的信息說明:
- UID:啓動這些進程的用戶
- PID:進程的進程ID
- PPID:父進程的進程號(如果該進程是由另一個進程啓動的)
- C:進程生命週期中的CPU利用率
- STIME:進程啓動時的系統時間
- TTY:進程啓動時的終端設備
- TIME:運行進程需要的累積CPU時間
- CMD:啓動的程序名稱
ps -elps -ef
最常用,而-l參數可以顯示其他額外的信息,也可以ps -efl
把兩部分的信息都顯示出來。
使用-l參數,會產生一個長格式輸出:
$ ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 32005 ep_pol ? 00:00:01 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 3 2 0 80 0 - 0 smpboo ? 00:00:00 ksoftirqd/0
1 S 0 5 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 worker ? 00:00:00 kworker/u2:0
1 S 0 7 2 0 -40 - - 0 smpboo ? 00:00:00 migration/0
1 S 0 8 2 0 80 0 - 0 rcu_gp ? 00:00:00 rcu_bh
1 R 0 9 2 0 80 0 - 0 - ? 00:00:00 rcu_sched
1 S 0 10 2 0 60 -20 - 0 rescue ? 00:00:00 lru-add-drain
......
4 S 0 4250 1 0 80 0 - 10025 poll_s ? 00:00:00 hypervkvpd
4 S 0 4251 1 0 80 0 - 28215 poll_s ? 00:00:00 sshd
4 S 0 4253 1 0 80 0 - 143481 poll_s ? 00:00:02 tuned
4 S 0 4254 1 0 80 0 - 55687 poll_s ? 00:00:00 rsyslogd
5 S 0 4515 1 0 80 0 - 22412 ep_pol ? 00:00:00 master
4 S 89 4532 4515 0 80 0 - 22455 ep_pol ? 00:00:00 qmgr
4 S 0 4569 4251 0 80 0 - 39183 poll_s ? 00:00:00 sshd
4 S 0 4763 4569 0 80 0 - 28859 do_wai pts/0 00:00:00 bash
4 S 89 4931 4515 0 80 0 - 22438 ep_pol ? 00:00:00 pickup
1 S 0 4972 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:0
1 S 0 4973 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:3
1 S 0 4974 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:1
1 R 0 4977 2 0 80 0 - 0 - ? 00:00:00 kworker/0:2
0 R 0 4979 4763 0 80 0 - 38309 - pts/0 00:00:00 ps
$ ^
每列的信息說明:
- F:內核分配給進程的系統標記
- S:進程的狀態
- O代表正在運行
- S代表正在休眠
- R代表可運行,正等待運行
- Z代表僵化,進程已結束但父進程已不存在
- T代表停止
- PRI:進程的優先級(越大表示優先級越低)
- NI:謙讓度值用來參與決定優先級
- ADDR:進程的內存地址
- SZ:假如進程被換出,所需交換空間的大致大小
- WCHAN:進程休眠的內核函數的地址
BSD風格的參數
伯克利軟件發行版(Berkeley software distribution, BSD)是加州大學伯克利分校開發的一個Unix版本。
BSD風格的ps命令參數:
參數 | 描述 |
---|---|
T | 顯示跟當前終端關聯的所有進程 |
a | 顯示跟任意終端關聯的所有進程 |
g | 顯示所有的進程,包括控制進程 |
r | 僅顯示運行中的進程 |
x | 顯示所有的進程,甚至包括未分配任何終端的進程 |
U userlist | 顯示歸userlist列表中某用戶ID所擁有的進程 |
p pidlist | 顯示PID在pidlist列表中的進程 |
t ttylist | 顯示所關聯的終端在ttylist列表中的進程 |
O format | 除了默認輸出的列之外,還輸出由format指定的列 |
X | 按過去的Linux i386寄存器格式顯示 |
Z | 將安全信息添加到輸出中。效果和-Z參數差不多 |
j | 顯示任務信息 |
l | 採用長模式 |
o format | 僅顯示由format指定的列 |
s | 採用信號格式顯示 |
u | 採用基於用戶的格式顯示 |
v | 採用虛擬內存格式顯示 |
N namelist | 定義在WCHAN列中使用的值 |
O order | 定義顯示信息列的順序 |
S | 將數值信息從子進程加到父進程上,比如CPU和內存的使用情況 |
c | 顯示真實的命令名稱(用以啓動進程的程序名稱) |
e | 顯示命令使用的環境變量 |
f | 用分層格式來顯示進程、表明哪些進程啓動了哪些進程 |
h | 不顯示頭信息 |
k sort | 指定用以將輸出排序的列 |
n | 和WCHAN信息一起顯示出來,用數值來表示用戶ID和組ID |
w | 爲較寬屏幕顯示寬輸出 |
H | 將線程按進程來顯示 |
m | 在進程後顯示線程 |
L | 列出所有格式指定符 |
V | 顯示ps命令的版本號 |
Unix和BSD類型的參數有很多是重複的,大多數情況下,選擇自己重用的格式的參數即可。
ps aux
這個是BSD風格的顯示所有進程的命令,效果類似於ps -ef
,主要是展示風格不同,輸出的列也有一些區別。
在使用BSD參數時,ps命令會自動改變輸出以模仿BSD格式:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128000 6540 ? Ss 09:19 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 09:19 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:19 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 09:19 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 09:19 0:00 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S 09:19 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 09:19 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 09:19 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 09:19 0:00 [lru-add-drain]
......
root 4256 0.0 0.0 40100 1540 ? Ss 09:19 0:00 /usr/sbin/hypervkvpd -n
root 4258 0.0 0.2 112860 4296 ? Ss 09:19 0:00 /usr/sbin/sshd -D
root 4259 0.0 0.4 222748 7800 ? Ssl 09:19 0:00 /usr/sbin/rsyslogd -n
root 4261 0.0 0.9 573924 17144 ? Ssl 09:19 0:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 0.0 0.1 89648 2100 ? Ss 09:19 0:00 /usr/libexec/postfix/master -w
postfix 4516 0.0 0.2 89752 4068 ? S 09:19 0:00 pickup -l -t unix -u
postfix 4517 0.0 0.2 89820 4096 ? S 09:19 0:00 qmgr -l -t unix -u
root 4770 0.0 0.3 156732 5524 ? Ss 09:28 0:00 sshd: root@pts/0
root 4774 0.0 0.1 115436 2068 pts/0 Ss 09:28 0:00 -bash
root 4829 0.0 0.0 0 0 ? S 09:35 0:00 [kworker/0:3]
root 4887 0.0 0.0 0 0 ? S 09:40 0:00 [kworker/0:1]
root 4901 0.0 0.0 0 0 ? R 09:45 0:00 [kworker/0:0]
root 4903 0.0 0.1 155360 1884 pts/0 R+ 09:48 0:00 ps aux
$
每列的信息說明:
- VSZ:進程在內存中的大小,以千字節(KB)爲單位
- RSS:進程在未喚出時佔用的物理內存
- STAT:代表當前進程狀態的雙字符狀態碼。
BSD風格表示的進程狀態碼更詳細。雙字符碼能比Unix風格輸出的單字符狀態碼更清楚地表示進程的當前狀態。
第一個字符采用了Unix分格S列相同的值,表明休眠(S)、運行(O)還是等待(R)。
第二個值進一步說明進程的狀態:
- <:該進程運行在高優先級上
- N:該進程運行在低優先級上
- L:該進程有頁面鎖定在內存中
- s:該進程是控制進程
- l:該進程是多線程的
- +:該進程運行在前臺
GNU長參數
最後,GNU開發人員在最近改進過的ps命令中加入了另外一些參數。其中一些複製了現有的Unix或BSD類型的參數,而另一些則提供了新功能。
GNU風格的ps命令參數:
參數 | 描述 |
---|---|
--deselect | 顯示所有進程,除了命令行中列出的進程 |
--Group grplist | 顯示組ID在grplist列表中的進程 |
--User userlist | 顯示用戶ID在userlist列表中的進程 |
--group grplist | 顯示有效組ID在grplist列表中的進程 |
--pid pidlist | 顯示PID在pidlist列表中的進程 |
--ppid pidlist | 顯示父PID在pidlist列表中的進程 |
--sid sidlist | 顯示會話ID在sidlist列表中的進程 |
--tty ttylist | 顯示終端設備號在ttylist列表中的進程 |
--user userlist | 顯示有效用戶ID在userlist列表中的進程 |
--format format | 僅顯示由format指定的列 |
--context | 顯示額外的安全信息 |
--cols n | 將屏幕寬度設置爲n列 |
--columns n | 將屏幕寬度設置爲n列 |
--cumulative | 包含已停止的子進程的信息 |
--forest | 用層級結構顯示出進程和父進程之間的關係 |
--headers | 在每頁輸出是顯示列的頭 |
--no-headers | 不顯示列的頭 |
--lines n | 將屏幕高度設爲n行 |
--rows n | 將屏幕高度設爲n排 |
--sort order | 指定將輸出按哪列排序 |
--width n | 將屏幕寬度設爲n列 |
--help | 顯示幫助信息 |
--info | 顯示調試信息 |
--version | 顯示ps命令的版本號 |
部分GNU長參數可以和Unix或BSD風格的參數混用來定製輸出。
--forest參數 顯示進程的層級信息
這麼多參數中,--forest是一個很好的功能。它會顯示進程的層級信息,並用ASCII字符繪出好看的效果:
$ ps -ef --forest
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 09:19 ? 00:00:00 [kthreadd]
root 3 2 0 09:19 ? 00:00:00 \_ [ksoftirqd/0]
......
root 4256 1 0 09:19 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4258 1 0 09:19 ? 00:00:00 /usr/sbin/sshd -D
root 4770 4258 0 09:28 ? 00:00:00 \_ sshd: root@pts/0
root 4774 4770 0 09:28 pts/0 00:00:00 \_ -bash
root 5001 4774 0 11:12 pts/0 00:00:00 \_ ps -ef --forest
root 4259 1 0 09:19 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4261 1 0 09:19 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 1 0 09:19 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4517 4503 0 09:19 ? 00:00:00 \_ qmgr -l -t unix -u
postfix 4958 4503 0 11:00 ? 00:00:00 \_ pickup -l -t unix -u
$
Unix風格的-H參數也有同樣的功能,但是效果沒有這個好:
$ ps -efH
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 09:19 ? 00:00:00 [kthreadd]
root 3 2 0 09:19 ? 00:00:00 [ksoftirqd/0]
......
root 4256 1 0 09:19 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4258 1 0 09:19 ? 00:00:00 /usr/sbin/sshd -D
root 4770 4258 0 09:28 ? 00:00:00 sshd: root@pts/0
root 4774 4770 0 09:28 pts/0 00:00:00 -bash
root 5002 4774 0 11:13 pts/0 00:00:00 ps -efH
root 4259 1 0 09:19 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4261 1 0 09:19 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 1 0 09:19 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4517 4503 0 09:19 ? 00:00:00 qmgr -l -t unix -u
postfix 4958 4503 0 11:00 ? 00:00:00 pickup -l -t unix -u
$
BSD風格的f參數也是這個功能,效果和--forest一樣。
top 命令實時監測進程
top命令和ps命令相似,都能夠顯示進程信息,並且是實時的:
$ top
top - 12:01:28 up 2:41, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 2 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1816668 total, 335380 free, 1325796 used, 155492 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 321636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5028 root 20 0 161880 2216 1572 R 0.3 0.1 0:00.06 top
1 root 20 0 128000 6544 4136 S 0.0 0.4 0:01.12 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 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.03 kworker/u2:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 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.35 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.11 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 watchdogd
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
31 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
32 root 39 19 0 0 0 S 0.0 0.0 0:00.06 khugepaged
33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
41 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
輸出的第一部分顯示的是系統的概況:
- 第一行顯示了當前時間、系統的運行時間、登錄的用戶數以及系統的平均負載。
- 平均負載有3個值:最近1分鐘的、最近5分鐘的、最近15分鐘的平均負載
- 第二行顯示了進程概要信息。這裏將進程叫做任務(task),各種狀態進程的數量:
- total:總數
- running:運行
- sleeping:休眠
- stopped:停止
- zombie:僵化(僵化狀態是指進程完成了,但父進程沒有響應)
- 第三行顯示了CPU的概要信息,將CPU利用率分成幾類輸出:
- us【user space】— 用戶空間佔用CPU的百分比。
- sy【sysctl】— 內核空間佔用CPU的百分比。
- ni【】— 改變過優先級的進程佔用CPU的百分比
- id【idolt】— 空閒CPU百分比
- wa【wait】— IO等待佔用CPU的百分比
- hi【Hardware IRQ】— 硬中斷佔用CPU的百分比
- si【Software Interrupts】— 軟中斷佔用CPU的百分比
- 第四行是系統的物理內存狀態:
- total — 物理內存總量
- free — 空閒內存總量
- used — 使用中的內存總量
- buff/cache — 用作內核緩存的內存量
- 第五行是系統的交換空間狀態:
- total — 交換區總量
- free — 空閒交換區總量
- used — 使用的交換區總量
- avail Mem — 緩衝的交換區總量。內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即爲這些內容已存在於內存中的交換區的大小,相應的內存再次被換出時可不必再對交換區寫入。
- 最後一部分顯示了當前運行中的進程的詳細列表,有些列和ps命令的輸出類似:
- PID:進程的ID
- USER:進程屬主的名字
- PR:進程的優先級
- NI:進程的謙讓度值(nice值)
- VIRT:進程佔用的虛擬內存總量
- RES:進程佔用的物理內存總量
- SHR:進程和其他進程共享的內存總量
- S:進程的狀態(D可中斷的休眠狀態,R運行,S休眠,T跟蹤狀態或停止狀態,Z僵化)
- %CPU:進程使用的CPU時間比例
- %MEM:進程使用的內存佔可用內存的比例
- TIME+:自進程啓動到目前爲止的CPU時間總量
- COMMAND:進程所對應的命令行名稱,也就是啓動的程序名
默認情況下,top啓動後按%CPU排序,可按f指定其他列。輪詢時間默認是3.0秒,可按d修改。按q是退出。其他就不列舉了。
結束進程
在Linux中,進程之間通過信號來通信。大多數編寫完善的程序都能接收和處理標準Unix進程信號。
Linux進程信號:
信號 | 名稱 | 描述 |
---|---|---|
1 | HUP | 掛起 |
2 | INT | 中斷 |
3 | QUIT | 結束運行 |
9 | KILL | 無條件終止 |
11 | SEGV | 段錯誤 |
15 | TERM | 儘可能終止 |
17 | STOP | 無條件停止運行,但不終止 |
18 | TSTP | 停止或暫停,但繼續在後臺運行 |
19 | CONT | 在STOP或TSTP之後恢復執行 |
kill命令
kill命令可通過進程ID(PID)給進程發信號。默認發送TERM信號。因爲只能使用PID來指定,而不能用命令名,所以有時候不是很好用。
要發送信號,你還必須是該進程的屬主或者是root。
kill命令不會有任何輸出,要檢查kill命令是由有效,可以再運行ps或top命令。
killall命令
killall命令支持通過進程名而不是PID來結束進程。killall命令也支持通配符。