linux下如何查詢進(jìn)程

這篇文章主要講解了“l(fā)inux下如何查詢進(jìn)程”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“l(fā)inux下如何查詢進(jìn)程”吧!

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)柳林免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

查詢進(jìn)程的命令:1、ps命令,能查看系統(tǒng)中所有運(yùn)行進(jìn)程的詳細(xì)信息,語(yǔ)法“ps aux”或“ps -le”;2、top命令,能實(shí)時(shí)監(jiān)聽進(jìn)程運(yùn)行狀態(tài),語(yǔ)法“top 選項(xiàng)”;3、pstree命令,能查看進(jìn)程樹,以樹形結(jié)構(gòu)顯示程序和進(jìn)程之間的關(guān)系。

本教程操作環(huán)境:CentOS 6系統(tǒng)、Dell G3電腦。

進(jìn)程是正在執(zhí)行的一個(gè)程序或命令,每個(gè)進(jìn)程都是一個(gè)運(yùn)行的實(shí)體,都有自己的地址空間,并占用一定的系統(tǒng)資源。

無(wú)論是 Linux 系統(tǒng)管理員還是普通用戶,監(jiān)視系統(tǒng)進(jìn)程的運(yùn)行情況并適時(shí)終止一些失控的進(jìn)程,是每天的例行事務(wù)。

Linux 中雖然使用命令進(jìn)行進(jìn)程管理,但是進(jìn)程管理的主要目的是一樣的,即查看系統(tǒng)中運(yùn)行的程序和進(jìn)程、判斷服務(wù)器的健康狀態(tài)和強(qiáng)制中止不需要的進(jìn)程。

那么linux下查詢進(jìn)程命令是什么?下面本篇文章給大家分享一些linux查詢進(jìn)程的命令。

Linux ps命令:查看正在運(yùn)行的進(jìn)程

ps 命令是最常用的監(jiān)控進(jìn)程的命令,通過此命令可以查看系統(tǒng)中所有運(yùn)行進(jìn)程的詳細(xì)信息。

ps 命令的基本格式如下:

[root@localhost ~]# ps aux
#查看系統(tǒng)中所有的進(jìn)程,使用 BS 操作系統(tǒng)格式
[root@localhost ~]# ps -le
#查看系統(tǒng)中所有的進(jìn)程,使用 Linux 標(biāo)準(zhǔn)命令格式

選項(xiàng):

  • a:顯示一個(gè)終端的所有進(jìn)程,除會(huì)話引線外;

  • u:顯示進(jìn)程的歸屬用戶及內(nèi)存的使用情況;

  • x:顯示沒有控制終端的進(jìn)程;

  • -l:長(zhǎng)格式顯示更加詳細(xì)的信息;

  • -e:顯示所有進(jìn)程;

可以看到,ps 命令有些與眾不同,它的部分選項(xiàng)不能加入"-",比如命令"ps aux",其中"aux"是選項(xiàng),但是前面不能帶“-”。

大家如果執(zhí)行 "man ps" 命令,則會(huì)發(fā)現(xiàn) ps 命令的幫助為了適應(yīng)不同的類 UNIX 系統(tǒng),可用格式非常多,不方便記憶。所以,我建議大家記憶幾個(gè)固定選項(xiàng)即可。比如:

  • "ps aux" 可以查看系統(tǒng)中所有的進(jìn)程;

  • "ps -le" 可以查看系統(tǒng)中所有的進(jìn)程,而且還能看到進(jìn)程的父進(jìn)程的 PID 和進(jìn)程優(yōu)先級(jí);

  • "ps -l" 只能看到當(dāng)前 Shell 產(chǎn)生的進(jìn)程;

有這三個(gè)命令就足夠了,下面分別來(lái)查看。

【例 1】

[root@localhost ~]# ps aux
#查看系統(tǒng)中所有的進(jìn)程
USER PID %CPU %MEM  VSZ  RSS   TTY STAT START TIME COMMAND
root   1  0.0  0.2 2872 1416   ?   Ss   Jun04 0:02 /sbin/init
root   2  0.0  0.0    0    0   ?    S   Jun04 0:00 [kthreadd]
root   3  0.0  0.0    0    0   ?    S   Jun04 0:00 [migration/0]
root   4  0.0  0.0    0    0   ?    S   Jun04 0:00 [ksoftirqd/0]
…省略部分輸出…

表 1 中羅列出了以上輸出信息中各列的具體含義。

表 1 ps命令輸出信息含義
表頭含義
USER該進(jìn)程是由哪個(gè)用戶產(chǎn)生的。
PID進(jìn)程的 ID。
%CPU該進(jìn)程占用 CPU 資源的百分比,占用的百分比越高,進(jìn)程越耗費(fèi)資源。
%MEM該進(jìn)程占用物理內(nèi)存的百分比,占用的百分比越高,進(jìn)程越耗費(fèi)資源。
VSZ該進(jìn)程占用虛擬內(nèi)存的大小,單位為 KB。
RSS該進(jìn)程占用實(shí)際物理內(nèi)存的大小,單位為 KB。
TTY該進(jìn)程是在哪個(gè)終端運(yùn)行的。其中,tty1 ~ tty7 代表本地控制臺(tái)終端(可以通過 Alt+F1 ~ F7 快捷鍵切換不同的終端),tty1~tty6 是本地的字符界面終端,tty7 是圖形終端。pts/0 ~ 255 代表虛擬終端,一般是遠(yuǎn)程連接的終端,第一個(gè)遠(yuǎn)程連接占用 pts/0,第二個(gè)遠(yuǎn)程連接占用 pts/1,依次増長(zhǎng)。
STAT進(jìn)程狀態(tài)。常見的狀態(tài)有以下幾種:
  1. -D:不可被喚醒的睡眠狀態(tài),通常用于 I/O 情況。

  2. -R:該進(jìn)程正在運(yùn)行。

  3. -S:該進(jìn)程處于睡眠狀態(tài),可被喚醒。

  4. -T:停止?fàn)顟B(tài),可能是在后臺(tái)暫?;蜻M(jìn)程處于除錯(cuò)狀態(tài)。

  5. -W:內(nèi)存交互狀態(tài)(從 2.6 內(nèi)核開始無(wú)效)。

  6. -X:死掉的進(jìn)程(應(yīng)該不會(huì)出現(xiàn))。

  7. -Z:僵尸進(jìn)程。進(jìn)程已經(jīng)中止,但是部分程序還在內(nèi)存當(dāng)中。

  8. -<:高優(yōu)先級(jí)(以下狀態(tài)在 BSD 格式中出現(xiàn))。

  9. -N:低優(yōu)先級(jí)。

  10. -L:被鎖入內(nèi)存。

  11. -s:包含子進(jìn)程。

  12. -l:多線程(小寫 L)。

  13. -+:位于后臺(tái)。

START該進(jìn)程的啟動(dòng)時(shí)間。
TIME該進(jìn)程占用 CPU 的運(yùn)算時(shí)間,注意不是系統(tǒng)時(shí)間。
COMMAND產(chǎn)生此進(jìn)程的命令名。

【例 2】"ps aux"命令可以看到系統(tǒng)中所有的進(jìn)程,"ps -le"命令也能看到系統(tǒng)中所有的進(jìn)程。由于 "-l" 選項(xiàng)的作用,所以 "ps -le" 命令能夠看到更加詳細(xì)的信息,比如父進(jìn)程的 PID、優(yōu)先級(jí)等。但是這兩個(gè)命令的基本作用是一致的,掌握其中一個(gè)就足夠了。

[root@localhost ~]# ps -le
F S UID PID PPID C  PRI Nl ADDR  SZ WCHAN TTY      TIME  CMD
4 S   0   1    0 0  80   0 -    718 -     ?    00:00:02  init
1 S   0   2    0 0  80   0 -      0 -     ?    00:00:00  kthreadd
1 S   0   3    2 0 -40   - -      0 -     ?    00:00:00  migration/0
1 S   0   4    2 0  80   0 -      0 -     ?    00:00:00  ksoflirqd/0
1 S   0   5    2 0 -40   - -      0 -     ?    00:00:00  migration/0
…省略部分輸出…

表 2 羅列出以上輸出信息中各列的含義。

表 2 ps -le 命令輸出信息
表頭含義
F進(jìn)程標(biāo)志,說明進(jìn)程的權(quán)限,常見的標(biāo)志有兩個(gè):
  • 1:進(jìn)程可以被復(fù)制,但是不能被執(zhí)行;

  • 4:進(jìn)程使用超級(jí)用戶權(quán)限;

S進(jìn)程狀態(tài)。具體的狀態(tài)和"psaux"命令中的 STAT 狀態(tài)一致;
UID運(yùn)行此進(jìn)程的用戶的 ID;
PID進(jìn)程的 ID;
PPID父進(jìn)程的 ID;
C該進(jìn)程的 CPU 使用率,單位是百分比;
PRI進(jìn)程的優(yōu)先級(jí),數(shù)值越小,該進(jìn)程的優(yōu)先級(jí)越高,越早被 CPU 執(zhí)行;
NI進(jìn)程的優(yōu)先級(jí),數(shù)值越小,該進(jìn)程越早被執(zhí)行;
ADDR該進(jìn)程在內(nèi)存的哪個(gè)位置;
SZ該進(jìn)程占用多大內(nèi)存;
WCHAN該進(jìn)程是否運(yùn)行。"-"代表正在運(yùn)行;
TTY該進(jìn)程由哪個(gè)終端產(chǎn)生;
TIME該進(jìn)程占用 CPU 的運(yùn)算時(shí)間,注意不是系統(tǒng)時(shí)間;
CMD產(chǎn)生此進(jìn)程的命令名;

【例 3】如果不想看到所有的進(jìn)程,只想查看一下當(dāng)前登錄產(chǎn)生了哪些進(jìn)程,那只需使用 "ps -l" 命令就足夠了:

[root@localhost ~]# ps -l
#查看當(dāng)前登錄產(chǎn)生的進(jìn)程
F S UID   PID  PPID C PRI NI ADDR SZ WCHAN TTY       TIME CMD
4 S 0   18618 18614 0  80  0 - 1681  -     pts/1 00:00:00 bash
4 R 0   18683 18618 4  80  0 - 1619  -     pts/1 00:00:00 ps

可以看到,這次從 pts/1 虛擬終端登錄,只產(chǎn)生了兩個(gè)進(jìn)程:一個(gè)是登錄之后生成的 Shell,也就是 bash;另一個(gè)是正在執(zhí)行的 ps 命令。

Linux top命令:持續(xù)監(jiān)聽進(jìn)程運(yùn)行狀態(tài)

ps 命令可以一次性給出當(dāng)前系統(tǒng)中進(jìn)程狀態(tài),但使用此方式得到的信息缺乏時(shí)效性,并且,如果管理員需要實(shí)時(shí)監(jiān)控進(jìn)程運(yùn)行情況,就必須不停地執(zhí)行 ps 命令,這顯然是缺乏效率的。

為此,Linux 提供了 top 命令。top 命令可以動(dòng)態(tài)地持續(xù)監(jiān)聽進(jìn)程地運(yùn)行狀態(tài),與此同時(shí),該命令還提供了一個(gè)交互界面,用戶可以根據(jù)需要,人性化地定制自己的輸出,進(jìn)而更清楚地了進(jìn)程的運(yùn)行狀態(tài)。

top 命令的基本格式如下:

[root@localhost ~]#top [選項(xiàng)]

選項(xiàng):

  • -d 秒數(shù):指定 top 命令每隔幾秒更新。默認(rèn)是 3 秒;

  • -b:使用批處理模式輸出。一般和"-n"選項(xiàng)合用,用于把 top 命令重定向到文件中;

  • -n 次數(shù):指定 top 命令執(zhí)行的次數(shù)。一般和"-"選項(xiàng)合用;

  • -p 進(jìn)程PID:僅查看指定 ID 的進(jìn)程;

  • -s:使 top 命令在安全模式中運(yùn)行,避免在交互模式中出現(xiàn)錯(cuò)誤;

  • -u 用戶名:只監(jiān)聽某個(gè)用戶的進(jìn)程;

在 top 命令的顯示窗口中,還可以使用如下按鍵,進(jìn)行一下交互操作:

  • ? 或 h:顯示交互模式的幫助;

  • P:按照 CPU 的使用率排序,默認(rèn)就是此選項(xiàng);

  • M:按照內(nèi)存的使用率排序;

  • N:按照 PID 排序;

  • T:按照 CPU 的累積運(yùn)算時(shí)間排序,也就是按照 TIME+ 項(xiàng)排序;

  • k:按照 PID 給予某個(gè)進(jìn)程一個(gè)信號(hào)。一般用于中止某個(gè)進(jìn)程,信號(hào) 9 是強(qiáng)制中止的信號(hào);

  • r:按照 PID 給某個(gè)進(jìn)程重設(shè)優(yōu)先級(jí)(Nice)值;

  • q:退出 top 命令;

我們看看 top 命令的執(zhí)行結(jié)果,如下:

[root@localhost ~]# top
top - 12:26:46 up 1 day, 13:32, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 625344k total, 571504k used, 53840k free, 65800k buffers
Swap: 524280k total, 0k used, 524280k free, 409280k cached
PID   USER PR NI VIRT  RES  SHR S %CPU %MEM   TIME+ COMMAND
19002 root 20  0 2656 1068  856 R  0.3  0.2 0:01.87 top
1     root 20  0 2872 1416 1200 S  0.0  0.2 0:02.55 init
2     root 20  0    0    0    0 S  0.0  0.0 0:00.03 kthreadd
3     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
4     root 20  0    0    0    0 S  0.0  0.0 0:00.15 ksoftirqd/0
5     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
6     root RT  0    0    0    0 S  0.0  0.0 0:10.01 watchdog/0
7     root 20  0    0    0    0 S  0.0  0.0 0:05.01 events/0
8     root 20  0    0    0    0 S  0.0  0.0 0:00.00 cgroup
9     root 20  0    0    0    0 S  0.0  0.0 0:00.00 khelper
10    root 20  0    0    0    0 S  0.0  0.0 0:00.00 netns
11    root 20  0    0    0    0 S  0.0  0.0 0:00.00 async/mgr
12    root 20  0    0    0    0 S  0.0  0.0 0:00.00 pm
13    root 20  0    0    0    0 S  0.0  0.0 0:01.70 sync_supers
14    root 20  0    0    0    0 S  0.0  0.0 0:00.63 bdi-default
15    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kintegrityd/0
16    root 20  0    0    0    0 S  0.0  0.0 0:02.52 kblockd/0
17    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpid
18    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpi_notify

我們解釋一下命令的輸出。top 命令的輸出內(nèi)容是動(dòng)態(tài)的,默認(rèn)每隔 3 秒刷新一次。命令的輸出主要分為兩部分:

  • 第一部分是前五行,顯示的是整個(gè)系統(tǒng)的資源使用狀況,我們就是通過這些輸出來(lái)判斷服務(wù)器的資源使用狀態(tài)的;

  • 第二部分從第六行開始,顯示的是系統(tǒng)中進(jìn)程的信息;

Linux pstree命令:查看進(jìn)程樹

pstree 命令是以樹形結(jié)構(gòu)顯示程序和進(jìn)程之間的關(guān)系,此命令的基本格式如下:

[root@localhost ~]# pstree [選項(xiàng)] [PID或用戶名]

表 1 羅列出了 pstree 命令常用選項(xiàng)以及各自的含義。

表 1 pstree命令常用選項(xiàng)及含義
選項(xiàng)含義
-a顯示啟動(dòng)每個(gè)進(jìn)程對(duì)應(yīng)的完整指令,包括啟動(dòng)進(jìn)程的路徑、參數(shù)等。
-c不使用精簡(jiǎn)法顯示進(jìn)程信息,即顯示的進(jìn)程中包含子進(jìn)程和父進(jìn)程。
-n根據(jù)進(jìn)程 PID 號(hào)來(lái)排序輸出,默認(rèn)是以程序名排序輸出的。
-p顯示進(jìn)程的 PID。
-u顯示進(jìn)程對(duì)應(yīng)的用戶名稱。

需要注意的是,在使用 pstree 命令時(shí),如果不指定進(jìn)程的 PID 號(hào),也不指定用戶名稱,則會(huì)以 init 進(jìn)程為根進(jìn)程,顯示系統(tǒng)中所有程序和進(jìn)程的信息;反之,若指定 PID 號(hào)或用戶名,則將以 PID 或指定命令為根進(jìn)程,顯示 PID 或用戶對(duì)應(yīng)的所有程序和進(jìn)程。

init 進(jìn)程是系統(tǒng)啟動(dòng)的第一個(gè)進(jìn)程,進(jìn)程的 PID 是 1,也是系統(tǒng)中所有進(jìn)程的父進(jìn)程。

【例 1】

[root@1ocalhost ~]# pstree
init──┬──abrc-dump-oopa
├──abrtd
├──acpid
...省略部分輸出...
├──rayslogd───3*[{rsyslogrd}]
#有3個(gè)rsyslogd進(jìn)程存在
├──sshd───sshd───bash───pstree
#Pstree命令進(jìn)程是在遠(yuǎn)程連接中被執(zhí)行的
├──udevd───2*[udevd]
└──xinecd

【例 2】如果想知道某個(gè)用戶都啟動(dòng)了哪些進(jìn)程,使用 pstree 命令可以很容易實(shí)現(xiàn),以 MySQL 用戶為例:

[root@1ocalhost ~]# pstree mysql
mysqid---6*[{mysqid}]

此輸出結(jié)果顯示了 mysql 用戶對(duì)應(yīng)的進(jìn)程為 mysqid,并且 mysqid 進(jìn)程擁有 5 個(gè)子進(jìn)程(外加 1 個(gè)父進(jìn)程,共計(jì) 6 個(gè)進(jìn)程)。

Linux lsof命令:列出進(jìn)程調(diào)用或打開的文件信息

我們知道,通過 ps 命令可以查詢到系統(tǒng)中所有的進(jìn)程,那么,是否可以進(jìn)一步知道這個(gè)進(jìn)程到底在調(diào)用哪些文件嗎?當(dāng)然可以,使用 lsof 命令即可。

lsof 命令,“l(fā)ist opened files”的縮寫,直譯過來(lái),就是列舉系統(tǒng)中已經(jīng)被打開的文件。通過 lsof 命令,我們就可以根據(jù)文件找到對(duì)應(yīng)的進(jìn)程信息,也可以根據(jù)進(jìn)程信息找到進(jìn)程打開的文件。

lsof 命令的基本格式如下:

[root@localhost ~]# lsof [選項(xiàng)]

此命令常用的選項(xiàng)及功能,如表 1 所示。

表 1 lsof 命令常用選項(xiàng)及功能
選項(xiàng)功能
-c 字符串只列出以字符串開頭的進(jìn)程打開的文件。
+d 目錄名列出某個(gè)目錄中所有被進(jìn)程調(diào)用的文件。
-u 用戶名只列出某個(gè)用戶的進(jìn)程打開的文件。
-p pid列出某個(gè) PID 進(jìn)程打開的文件。

【例 1】

[root@localhost ~]# lsof | more
#查詢系統(tǒng)中所有進(jìn)程調(diào)用的文件
COMMAND PID  USER  FD    TYPE  DEVICE  SIZE/OFF  NODE  NAME
init               1      root    cwd  DIR    8,3       4096        2           /
init               1      root    rtd    DIR    8,3       4096        2           /
init               1      root    txt     REG   8,3       145180    130874 /sbin/init
init               1      root    mem REG   8,3       142472    665291 /lib/ld-2.12.so
init               1      root    mem REG   8,3       58704      655087 /lib/libnss_files-2.12.so
…省略部分輸出…

這個(gè)命令的輸出非常多。它會(huì)按照 PID,從 1 號(hào)進(jìn)程開始列出系統(tǒng)中所有的進(jìn)程正在調(diào)用的文件名。

【例 2】

[root@localhost ~]# lsof /sbin/init
#查詢某個(gè)文件被哪個(gè)進(jìn)程調(diào)用
COMMAND PID USER  FD  TYPE  DEVICE  SIZE/OFF  NODE    NAME
init               1     root    txt  REG   8,3      145180     130874   /sbin/init

lsof 命令也可以反過來(lái)查詢某個(gè)文件被哪個(gè)進(jìn)程調(diào)用。這個(gè)例子就查詢到 /sbin/init 文件是被 init 進(jìn)程調(diào)用的。

感謝各位的閱讀,以上就是“l(fā)inux下如何查詢進(jìn)程”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)linux下如何查詢進(jìn)程這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

文章標(biāo)題:linux下如何查詢進(jìn)程
網(wǎng)頁(yè)路徑:http://bm7419.com/article38/geijpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈做網(wǎng)站、自適應(yīng)網(wǎng)站Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化