pstree命令:
樹狀結構顯示進程間關系
-
選項:
?-p:顯示PID號
[root@node1 ~]# pstree -p
systemd(1)─┬─ModemManager(6511)─┬─{ModemManager}(6521)
│ └─{ModemManager}(6529)
├─NetworkManager(6536)─┬─dhclient(6703)
│ ├─{NetworkManager}(6628)
│ └─{NetworkManager}(6632)
├─VGAuthService(6538)
├─abrt-watch-log(6553)
├─abrt-watch-log(6556)
├─abrtd(6552)
├─accounts-daemon(6547)─┬─{accounts-daemon}(6573)
│ └─{accounts-daemon}(6575)
├─alsactl(6535)
├─at-spi-bus-laun(7519)─┬─dbus-daemon(7524)───{dbus-daemon}(7525)
...
ps命令:顯示當前進程的狀態(tài)信息
格式:
?ps [options]-
選項有三種風格:
- UNIX風格,可以組合使用,前面只能有一個dash;
- BSD風格,可以組合使用,前面不能有dash;
- GNU長格式,前面有兩個dash;
-
常用組合之一:aux
?a:所有與終端相關的進程;
?x:所有與終端無關的進程;
?u:以用戶為中心組織進程狀態(tài)信息顯示;-
字段信息:
?VSZ:虛擬內(nèi)存集;
?RSS:常駐內(nèi)存集;
?TTY:與終端相關;
?STAT:運行狀態(tài);
??R:running(運行態(tài))
??S:interruptable sleeping(可中斷睡眠)
??D:uninterruptable sleeping(不可中斷睡眠)
??T:Stopped(停止態(tài))
??Z:zomble(僵死態(tài))
??+:前臺進程
??l:多線程進程
??N:低優(yōu)先級進程
??<:高優(yōu)先級進程
??s:session leader(會話主導者)
?START:進程啟動時間;
?COMMAND:啟動此進程的命令;
[root@node1 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.6 128140 6860 ? Ss 13:04 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 13:04 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 13:04 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 13:04 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 13:04 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 13:04 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? R 13:04 0:00 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 13:04 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S 13:04 0:00 [watchdog/0] root 13 0.0 0.0 0 0 ? S 13:04 0:00 [kdevtmpfs] root 14 0.0 0.0 0 0 ? S< 13:04 0:00 [netns] ... -
字段信息:
-
常用組合之二:-ef
?-e:顯示所有進程;
?-f:顯示完整格式的進程信息;-
字段信息:
?PPID:父進程ID;
?C:CPU的占用百分比;
?PSR:運行于哪個CPU核心;
?STIME:進程啟動時間;
?TTY:與終端相關;
?TIME:累計運行時間;
?CMD:啟動此進程的命令;
[root@node1 ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 13:04 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 13:04 ? 00:00:00 [kthreadd] root 3 2 0 13:04 ? 00:00:00 [ksoftirqd/0] root 5 2 0 13:04 ? 00:00:00 [kworker/0:0H] root 7 2 0 13:04 ? 00:00:00 [migration/0] root 8 2 0 13:04 ? 00:00:00 [rcu_bh] root 9 2 0 13:04 ? 00:00:00 [rcu_sched] root 10 2 0 13:04 ? 00:00:00 [lru-add-drain] root 11 2 0 13:04 ? 00:00:00 [watchdog/0] ... -
字段信息:
-
常用組合之三:-eFH
?-e:顯示所有進程;
?-F:顯示完整格式的進程信息;
?-H:以層級結構顯示進程的相關信息;[root@node1 ~]# ps -eFH root 1 0 0 32035 6860 0 13:04 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2983 1 0 9459 3600 0 13:04 ? 00:00:00 /usr/lib/systemd/systemd-journald root 3009 1 0 29788 4072 0 13:04 ? 00:00:00 /usr/sbin/lvmetad -f root 3015 1 0 12314 6540 0 13:04 ? 00:00:00 /usr/lib/systemd/systemd-udevd root 6485 1 0 15511 1084 0 13:04 ? 00:00:00 /sbin/auditd root 6487 6485 0 21138 916 0 13:04 ? 00:00:00 /sbin/audispd root 6489 6487 0 13907 1400 0 13:04 ? 00:00:00 /usr/sbin/sedispatch root 6511 1 0 107650 7584 0 13:04 ? 00:00:00 /usr/sbin/ModemManager root 6513 1 0 14378 2564 0 13:04 ? 00:00:00 /usr/libexec/bluetooth/bluetoothd dbus 6514 1 0 17445 3504 0 13:04 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation rpc 6518 1 0 18412 1380 0 13:04 ? 00:00:00 /sbin/rpcbind -w avahi 6525 1 0 15569 2316 0 13:04 ? 00:00:00 avahi-daemon: running [node1.local] avahi 6541 6525 0 15536 392 0 13:04 ? 00:00:00 avahi-daemon: chroot helper libstor+ 6534 1 0 2144 820 0 13:04 ? 00:00:00 /usr/bin/lsmd -d ... -
常用組合之四:-eo | axo
?o field1,field2,...:自定義要顯示的字段列表,以逗號分隔;
??常用的field:
???pid:進程ID;
???ni:nice值(-20至19),nice值越小,優(yōu)先級越高;
???priority:優(yōu)先級;
???rtprio:實時優(yōu)先級;
???psr:運行于哪個CPU核心;
???pcpu:CPU使用百分比;
???stat:運行狀態(tài);
???comm:啟動此進程的命令;
???tty:與終端相關;
???ppid:父進程ID;
???...[root@node1 ~]# ps axo pid,ppid,psr,pcpu,stat,comm PID PPID PSR %CPU STAT COMMAND 1 0 0 0.0 Ss systemd 2 0 0 0.0 S kthreadd 3 2 0 0.0 S ksoftirqd/0 5 2 0 0.0 S< kworker/0:0H 7 2 0 0.0 S migration/0 8 2 0 0.0 S rcu_bh 9 2 0 0.0 R rcu_sched 10 2 0 0.0 S< lru-add-drain 11 2 0 0.0 S watchdog/0 13 2 0 0.0 S kdevtmpfs 14 2 0 0.0 S< netns 15 2 0 0.0 S khungtaskd 16 2 0 0.0 S< writeback 17 2 0 0.0 S< kintegrityd 18 2 0 0.0 S< bioset 19 2 0 0.0 S< bioset 20 2 0 0.0 S< bioset 21 2 0 0.0 S< kblockd 22 2 0 0.0 S< md 23 2 0 0.0 S< edac-poller
ps常見選項
?-C cmdlist:指定命令,多個命令用 "," 分隔
?-L:顯示線程
?-e:顯示所有進程,相當于-A
?-f:顯示完整格式程序信息
?-F:顯示更完整格式的進程信息
?-H:以進程層級格式顯示進程相關信息
?-u userlist:指定有效的用戶ID或名稱
?-U userlist:指定真正的用戶ID或名稱
?-g gid 或 groupname:指定有效的gid或組名稱
?-G gid 或 groupname:指定真正的gid或組名稱
?-p PID:顯示指定pid的進程
?--ppid PID:顯示屬于pid的子進程
?-M:顯示SELinux信息,相當于Z
ps示例:
- 查詢你擁有的所有進程:
~]# ps -x - 顯示指定用戶名(RUID)或用戶ID的進程:
~]# ps -fU apache
~]# ps -fu 48 - 顯示指定用戶名(EUID)或用戶ID的進程:
~]# ps -fu wang
~]# ps -fu 1000 - 查看以root用戶權限(實際和有效ID)運行的每個進程:
~]# ps -U root -u root - 列出某個組擁有的所有進程(實際組ID:RGID或名稱):
~]# ps -fG nginx - 列出有效組名稱(或會話)所擁有的所有進程:
~]# ps -fg mysql
~]# ps -fG 27 - 通過進程ID來顯示所屬的進程:
~]# ps -fp 1234 - 以父進程ID來顯示其下所有的進程,如顯示父進程為1154的所有進程:
~]# ps -f --ppid 1234 - 顯示指定PID的多個進程:
~]# ps -fp 1204,1239,1263 - 要按tty顯示所屬進程:
~]# ps -ft pst/0 - 以進程樹顯示系統(tǒng)中的進程如何相互鏈接:
~]# ps -e --forest - 以進程樹顯示指定的進程
~]# ps -f --forest -C sshd
~]# ps -ef --forest | grep -v grep | grep sshd - 要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及NLWP(輕量級進程數(shù))列:
~]# ps -fL -C nginx - 要列出所有格式說明符:
~]# ps L - 查看進程的PID,PPID,用戶名和命令:
~]# ps -eo pid ,ppid,user,cmd - 自定義格式顯示文件系統(tǒng)組,ni值開始時間和進程的時間
~]# ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime - 使用其PID查找進程名稱:
~]# ps -p 1244 -o comm= - 要以其名稱選擇特定進程,顯示其所有子進程
~]# ps -C sshd,bash - 查找指定進程名所有的所屬PID,在編寫需要從std輸出或文件讀取PID的腳本時,這個參數(shù)很有用:
~]# ps -C httpd,sshd -o pid= - 檢查一個進程的執(zhí)行時間
~]# ps -eo comm,etime,user | grep nginx - 查找占用最多內(nèi)存和CPU的進程:
~]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
~]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head - 顯示安全信息:
~]# ps -eM
~]# ps --context - 使用以下命令以用戶定義的格式顯示安全信息:
~]# ps -eo euser,ruser,suser,fuser,f,comm,label - 使用watch實用程序執(zhí)行重復的輸出以實現(xiàn)對就進程行實時的監(jiān)視,如下面的命令顯示每秒鐘的監(jiān)視:
~]# watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'