系統管理工具
- 進程的分類:
CPU-Bound:CPU密集型,非交互。特別消耗CPU的,加密解密,壓縮解壓
IO-Bound:IO密集型,交互。大量的硬盤讀寫,例如復制文件
- Linux系統狀態的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
- pstree命令:
pstree – display a tree of processes 顯示進程的樹狀結構
- ps: process state 進程狀態。
ps – report a snapshot of the current processes 顯示進程的當前狀態
Linux系統各進程的相關信息均保存在/proc/PID目錄下 的各文件中
每個進程都有唯一編號,每個數字的文件夾都對應著一個進程的編號。
[root@localhost ~]# ls /proc/
1 ????15 ???1822 ?2042 ?274 ?419 ?540 ?619 ??991 ?????????iomem ????????sched_debug
10 ???1532 ?1823 ?2044 ?275 ?426 ?542 ?639 ??992 ?????????ioports ??????schedstat
1005 ?1547 ?1878 ?2070 ?276 ?427 ?546 ?654 ??993 ?????????irq ??????????scsi
1011 ?1554 ?1883 ?2134 ?277 ?428 ?565 ?657 ??999 ?????????kallsyms ?????self
1012 ?1555 ?1889 ?2148 ?278 ?429 ?566 ?675 ??acpi ????????kcore ????????slabinfo
1072 ?16 ???1897 ?2168 ?279 ?487 ?567 ?7 ????asound ??????keys ?????????softirqs
pstree 不加 -p選項只顯示進程的名稱,加 -p可以顯示出進程的編號
[root@localhost ~]# pstree
[root@localhost ~]# pstree -p
pstree顯示進程的名稱
[root@localhost /etc/selinux]# pstree
init─┬─NetworkManager─┬─dhclient
│ ???????????????└─{NetworkManager} 表示線程
進程:一個進程肯定有一個線程,一個進程也可以有多個線程。
進程相當于一個項目組,承擔了一個工作,項目簡單一個人能夠完成,項目成員就一個人,就變現為一個線程,項目比較復雜,如果一個人干不了,需要多個人共同協作,這時候就表現為多個線程。進程和線程的關系相當于項目組合項目成員的關系。 一個人,就是一個線程,多個人,就是多個線程,每個線程相當于一個人。每個人和其他項目小組中的同一個小組中的其他人之間互相之間可以協作完成一些任務,各自是獨立運行的,這就是多線程。
多進程和多線程是兩碼事。進程和進程之間是相互隔斷的。
進程和進程之間相當于兩個項目小組之間的關系,各干各的活。一個進程里面多個線程之間因為為了完成同一個任務,只不過每個人扶著其中的一小部分工作,相互之間有協作關系。
線程:
在Linux中有些服務就是多線程的,但是不是必須的,可以調整。
[root@localhost ~]# service httpd start
[root@localhost ~]# pstree -p
init(1)─┬─NetworkManager(1654)─┬─dhclient(1718)
│ ?????????????????????└─{NetworkManager}(1719)
├─httpd(4573)─┬─httpd(4576)
│ ????????????├─httpd(4577)
│ ????????????├─httpd(4578)
│ ????????????├─httpd(4579)
│ ????????????├─httpd(4580)
│ ????????????├─httpd(4581)
│ ????????????├─httpd(4582)
│ ????????????└─httpd(4583)
一個主進程8個子進程。也可以以線程的方式。一個主進程,在開若干個子進程,每個子進程中在開若干個線程
[root@localhost ~]# vim /etc/sysconfig/httpd
[root@localhost ~]# service httpd restart
[root@localhost ~]# pstree -p
HTTPD=/usr/sbin/httpd.worker 去掉注釋
每個線程是可以獨立工作的。線程和線程之間,在同一個進程中是共享內存空間的。如果一個線程錯故障了,可能會影響統一進程中的其他線程,因為是共享內存空間的
顯示某個用戶的進程
pstree -p ding
在CnetOS7中查看某個進程的子進程:
[root@localhost ~]# pstree -ps 1
[root@localhost ~]# pstree -ps 992
systemd(1)───sshd(992)─┬─sshd(1532)───bash(1555)
└─sshd(8251)───bash(8259)───pstree(8884)
只看和指定進程的父子關系,顯示出上級進程、下級進程的關系。在6上不支持
高亮顯示:
[root@localhost ~]# pstree -psH 992
ps默認只顯示當前終端中運行的進程,就是當前用戶開啟的進程
查看進程進程ps
- ps [OPTION]…
- 支持三種選項:
UNIX選項 ?如-A -e 必須有一個 dash( – )開頭的
BSD選項 如a 伯克利大學流派,沒有 ( – )
GNU選項 如–help 兩個( – )
?
- 選項:默認顯示當前終端中的進程
a 選項包括所有終端中的進程
x 選項包括不鏈接終端的進程
u 選項顯示進程所有者的信息
f 選項顯示進程樹,相當于 –forest
k|–sort ?屬性 對屬性排序,屬性前加- 表示倒序
o 屬性… 選項顯示定制的信息 pid、cmd、%cpu、%mem
L 顯示支持的屬性列表
顯示所有終端開啟的進程
[root@localhost ~]# ps a
PID TTY ?????STAT ??TIME COMMAND
1555 pts/0 ???Ss+ ???0:00 -bash
8259 pts/1 ???Ss ????0:00 -bash
8750 pts/2 ???Ss ????0:00 bash
8832 pts/2 ???S+ ????0:00 vim a
9021 pts/1 ???R+ ????0:00 ps a
顯示和終端無關的進程,開機的時候就已經啟動了,和終端無關
[root@localhost ~]# ps ax
PID TTY ?????STAT???TIME COMMAND
1 ? ???????Ss ????0:05 /usr/lib/systemd/systemd
2 ? ???????S ?????0:00 [kthreadd]
3 ? ???????S ?????0:00 [ksoftirqd/0]
5 ? ???????S< ????0:00 [kworker/0:0H]
顯示進程誰在運行。把進程的運行身份顯示出來
[root@localhost ~]# ps aux
USER ???????PID %CPU %MEM ???VSZ ??RSS TTY ?????STAT START ??TIME COMMAND
root ?????????1 ?0.0 ?0.4 128164 ?4940 ? ???????Ss ??03:10 ??0:05 /usr/lib/systemd/systemd –switched-root –syst
root ?????????2 ?0.0 ?0.0 ?????0 ????0 ? ???????S ???03:10 ??0:00 [kthreadd]
USER用戶
PID
%CPU 占用的CPU
%MEM 占用的內存
VSZ 占的虛擬內存是多大。 虛擬內存是操作系統承諾分配給應用程序的內存。包括物理上的內存和swap上的內存。
RSS 占的實際內存是多大,真正分配給應用程序的內存
TTY 終端
STAT 狀態
START 什么時候開始運行的
TIME 時間片的累積值
COMMAND 正在執行的程序
類似于ps aux的,不如aux多
[root@localhost ~]# ps -ef
UID ????????PID ??PPID ?C?STIME TTY ?????????TIME CMD
root ?????????1 ?????0 ?0 03:10 ? ???????00:00:05 /usr/lib/systemd/systemdroot ?????????2 ?????0 ?0 03:10 ? ???????00:00:00 [kthreadd]
root ?????????3 ?????2 ?0 03:10 ? ???????00:00:00 [ksoftirqd/0]
C:表示CPU的利用率
-e 類似于 -A,等價的
?
顯示進程樹
[root@localhost ~]# ps auxf
父進程被殺死,子進程就沒了
挑一部字段分顯示
[root@localhost ~]# ps axo pid,cmd,%cpu
PID CMD ????????????????????????%CPU
1 /usr/lib/systemd/systemd — ?0.0
2 [kthreadd] ??????????????????0.0
3 [ksoftirqd/0] ???????????????0.0
默認按照PID進行顯示,按照cpu利用率排序
[root@localhost ~]# ps axo pid,cmd,%cpu –sort %cpu 長格式
PID CMD ????????????????????????%CPU
1 /usr/lib/systemd/systemd — ?0.0
[root@localhost ~]# ps axo pid,cmd,%cpu k %cpu 短格式
PID CMD ????????????????????????%CPU
1 /usr/lib/systemd/systemd — ?0.0
注意:在CentOS6上按照內存排序會有問題
關閉圖形界面
[root@localhost ~]# ps axo pid,cmd,%cpu,%mem k %mem
PID CMD ????????????????????????%CPU %MEM
657?/usr/bin/python -Es /usr/sb ?0.0 ?2.7
9588?/usr/bin/gnome-shell ???????25.0 ?5.8
[root@localhost ~]# free -h
total ???????used ???????free ?????shared ?buff/cache ??available
Mem: ??????????976M ???????305M ???????283M ????????10M ???????387M ???????462M
Swap: ?????????2.0G ???????3.9M ???????2.0G
[root@localhost ~]# init 3
[root@localhost ~]# free -h
total ???????used ???????free ?????shared ?buff/cache ??available
Mem: ??????????976M ???????194M ???????396M ????????10M ???????385M ???????575M
Swap: ?????????2.0G ???????3.9M ???????2.0G
[root@localhost ~]# ps axo pid,cmd,%cpu,%mem k %mem
PID CMD ????????????????????????%CPU %MEM
798 /sbin/dhclient -d -q -sf /u ?0.0 ?1.5
657?/usr/bin/python -Es /usr/sb ?0.0 ?2.7
顯示支持的屬性列表
[root@localhost ~]# ps L
%cpu ????????%CPU
%mem ????????%MEM
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
-C 顯示指定程序的名稱。相當于過濾
[root@localhost ~]# ps -C bash
PID TTY ?????????TIME CMD
4430 pts/1 ???00:00:00 bash
5217 pts/2 ???00:00:00 bash
5268 tty2 ????00:00:00 bash
細節:
終端A:
[root@localhost ~]# vim sl.sh
[root@localhost ~]# chmod +x sl.sh
[root@localhost ~]# cat sl.sh
#!/bin/bash
sleep 300
[root@localhost ~]# ./sl.sh
終端B:
[root@localhost ~]# ps -C sl.sh
PID TTY ?????????TIME CMD
5594 pts/1 ???00:00:00 sl.sh
如果不寫#!/bin/bash,再次執行
[root@localhost ~]# ps -C sl.sh
PID TTY ?????????TIME CMD
不寫 #!/bin/bash或者直接使用bash運行的程序,ps 中的 -C選項無法查詢出來
[root@localhost ~]# bash sl.sh
[root@localhost ~]# w 在bash上面運行的
root ????pts/1 ???172.18.0.100 ????23:41 ???3.00s ?0.47s ?0.00s bash sl.sh
混用的時候可能會產生沖突
[root@localhost ~]# ps -C sl.sh,vim,init axo pid,cmd,%mem
PID CMD ????????????????????????%MEM
1 /sbin/init ??????????????????0.1
2 [kthreadd] ??????????????????0.0
3 [migration/0] ???????????????0.0
-C sl.sh,vim,init不起作用
[root@localhost ~]# ps -C sl.sh,vim,init o pid,cmd,%mem
PID CMD ????????????????????????%MEM
1 /sbin/init ??????????????????0.1
5236 vim a ???????????????????????0.4
5296 vim abc ?????????????????????0.4
5572 vim abc ?????????????????????0.4
5884 /bin/bash ./sl.sh ???????????0.1
顯示線程
[root@localhost ~]# ps -Lef
root ??????5730 ?????1 ??5730 ?0 ???1 00:59 ? ???????00:00:00 /usr/sbin/httpd.worker
apache ????5851 ??5730 ??5851 ?0 ??27 01:00 ? ???????00:00:00 /usr/sbin/httpd.worker
……
-F 顯示更完整格式的進程信息
[root@localhost ~]# ps -eF
UID ????????PID ??PPID ?C ???SZ ??RSS PSR STIME TTY ?????????TIME CMD
root ?????????1 ?????0 ?0 ?4838 ?1556 ??0 Dec15 ? ???????00:00:02 /sbin/init
root ?????????2 ?????0 ?0 ????0 ????0 ??0 Dec15 ? ???????00:00:00 [kthreadd]
root ?????????3 ?????2 ?0 ????0 ????0 ??0 Dec15 ? ???????00:00:00 [migration/0]
PPID ?C
SZ
RSS
PSR 內核,進程是運行在哪個CPU上的
STIME TTY ?????????TIME CMD
運行的進程會在內核間切換
- -u userlist ?指定有效的用戶ID或名稱,生效的用戶
- -U userlist 指定真正的用戶ID或名稱,發起進程執行者的身份
例如普通用戶執行passwd命令。發起程序的運行者是普通用戶,生效的用戶是root
-u看到的是生效的用戶
互斥的選項:ps -C passwd -u root
顯示指定pid的進程。進程和進程編號,屬性的組合
[root@localhost ~]# ps -p 992 o pid,cmd,%cpu
PID CMD ????????????????????????%CPU
992 /usr/sbin/sshd -D ???????????0.0
[root@localhost ~]# ps -C passwd o pid,cmd,%cpu
PID CMD ????????????????????????%CPU
顯示屬于pid的子進程
[root@localhost ~]# ps –ppid 5730
PID TTY ?????????TIME CMD
5851 ? ???????00:00:00 httpd.worker
ps輸出屬性
- VSZ: Virtual memory SiZe,虛擬內存集,線性內存。承諾分配的虛擬內存,不是真的分配
- RSS: ReSident Size, 常駐內存集,真正分配的內存
- STAT:進程狀態
R:running
S: interruptable sleeping 可喚醒的休眠
D: uninterruptable sleeping 不可喚醒的休眠
T: stopped 暫停的,可以喚醒
Z: zombie 僵死的
+: 前臺進程
l: 多線程進程
L:內存分頁并帶鎖
N:低優先級進程
<: 高優先級進程
s: session leader,會話(子進程)發起者
ps
- ni: nice值
- pri: priority 優先級
- psr: processor ?CPU編號
- rtprio: 實時優先級
- 示例:
ps axo pid,cmd,psr,ni,pri,rtprio
- 常用組合:
aux
-ef
-eFH
-eo?pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm [挑一些字段來顯示]
查看優先級
[root@localhost ~]# ps axo pid,cmd,ni
PID CMD ?????????????????????????NI
1 /usr/lib/systemd/systemd — 0
2 [kthreadd] ?????????????? 0
3 [ksoftirqd/0] ???????????? 0
值越大優先級越差
查看進程優先級和CPU利用率
[root@localhost ~]# ps axo pid,cmd,ni,%cpu
[root@localhost ~]# ps axo pid,cmd,ni,%cpu
PID CMD ?????????????????????????NI %CPU
1 /usr/lib/systemd/systemd — ??0 ?0.6
調整優先級
[root@localhost ~]# renice -n -20 2543
2543 (process ID) old priority 0, new priority -20
[root@localhost ~]# ps axo pid,cmd,%cpu,ni
2543 ping 172.18.0.100 ???????????0.0 -20
-n選項也可以不加
[root@localhost ~]# renice -10 2543
2543 (process ID) old priority -20, new priority -10
[root@localhost ~]# renice 10 2543
2543 (process ID) old priority -10, new priority 10
指定以多少優先級運行命令
[root@localhost ~]# nice -n -5 ping 172.18.0.100
[root@localhost ~]# ps -axo pid,cmd,%cpu,ni
2639 ping 172.18.0.100 ???????????0.0 ?-5
renice是程序已經運行起來,后期去調整,nice是運行命令的時候就指定運行的優先級
[root@localhost ~]# nice -5 ping 172.18.0.100
[root@localhost ~]# ps -axo pid,cmd,%cpu,ni
2693 ping 172.18.0.100 ???????????0.0 ??5
2701 sleep 60 ????????????????????0.0 ??0
2702 ps -axo pid,cmd,%cpu,ni ?????0.0 ??0
[root@localhost ~]# nice -11 ping 172.18.0.100
[root@localhost ~]# ps -axo pid,cmd,%cpu,ni
2703 ping 172.18.0.100 ???????????0.0 ?11
[root@localhost ~]# nice –11 ping 172.18.0.100
[root@localhost ~]# ps -axo pid,cmd,%cpu,ni
2714 ping 172.18.0.100 ???????????0.0 -11
[root@localhost ~]# which nice
/usr/bin/nice
[root@localhost ~]# rpm -qf /usr/bin/nice
coreutils-8.22-18.el7.x86_64
查看pri的優先級
[root@localhost ~]# nice -n 10 ping 127.0.0.1
[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri
2828 ping 127.0.0.1 ??????????????0.0 ?10 ?0.1 ??9
[root@localhost ~]# nice -n -10 ping 127.0.0.1
[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri
2830 ping 127.0.0.1 ??????????????0.0 -10 ?0.1 ?29
終端A:[root@localhost ~]# nice -n 10 ping 127.0.0.1
終端B:[root@localhost ~]# nice -n -10 ping 127.0.0.1
[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri
2895 ping 127.0.0.1 ??????????????0.0 -10 ?0.1 ?29
2896 ping 127.0.0.1 ??????????????0.0 ?10 ?0.1 ??9
[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri
PID CMD ?????????????????????????NI %CPU PRI
2940 ping 127.0.0.1 ?????????????-10 ?0.0 ?29
2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9
pri值越大優先級越高,nice值越小優先級越高,范圍是-20 – 19
[root@localhost ~]# nice -n 30 ping 127.0.0.1
[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri
PID CMD ?????????????????????????NI %CPU PRI
2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9
3037 ping 127.0.0.1 ??????????????19 ?0.0 ??0
[root@localhost ~]# nice -n -20 ping 127.0.0.1
[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri
PID CMD ?????????????????????????NI %CPU PRI
2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9
3039 ping 127.0.0.1 ?????????????-20 ?0.0 ?39
實時優先級對應于前一部分,nice對應于系統優先級的后一部分。nice優先級又被稱為動態優先級,表面上給它設置了優先級,但運行的時候會根據系統的實際情況,自動的去調整優先級。系統的內核可能會去做一個相應的微調。realtime是固定優先級,設置好之后就固定不變了
[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri,rtprio
PID CMD ?????????????????????????NI %CPU PRI RTPRIO
2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9 ?????–
3119 ping 127.0.0.1 ?????????????-20 ?0.0 ?39 ?????–
[root@localhost ~]#
nice優先級不對應實時優先級,nice優先級和realtime沒有任何的對應關系。
查看實時優先級
[root@localhost ~]# ps axo pid,cmd,ni,%cpu,pri,rtprio
PID CMD ?????????????????????????NI %CPU PRI RTPRIO
7 [migration/0] ????????????????– ?0.0 139 ????99
10 [watchdog/0] ?????????????????– ?0.0 139 ????99 看門狗,監控內核狀態的
pri值越大優先級越高。
pri的優先級和系統的優先級是反著來劃的,pri的優先級是139-0,139最大,系統優先級是0-139,0最大
查看有效用戶和真正用戶
[ding@localhost ~]$ passwd
Changing password for user ding.
Changing password for ding.
(current) UNIX password:
[root@localhost ~]# ps axo pid,cmd,ni,%cpu,euid,ruid euid 和 uid一樣
[root@localhost ~]# ps axo pid,cmd,ni,%cpu,uid,ruid
3275 passwd ???????????????????????0 ?0.0 ????0 ?1000
有效用戶:uid,運行進程用戶的uid
真正用戶:ruid,發起進程用戶的uid
ps示例
- 查詢你擁有的所有進程:
ps -x
- 顯示指定用戶名(RUID)或用戶ID的進程:
ps -fU apache 用戶名
ps -fu 48 用戶的UID
(RUID)真實用戶
- 顯示指定用戶名(EUID)或用戶ID的進程:
ps -fu wang
ps -fu 1000
(EUID)有效用戶
- 查看以root用戶權限(實際和有效ID)運行的每個進程:
ps -U root -u root
- 列出某個組擁有的所有進程(實際組ID:RGID或名稱):
ps -fG nginx
顯示所有和終端無連接的進程
[root@localhost ~]# ps x
PID TTY ?????STAT ??TIME COMMAND
查詢你擁有的所有進程
[root@localhost ~]# ?ps -x 顯示的是有效用戶的進程
顯示指定用戶名(RUID)或用戶ID的進程
可以是UID,也可以是用戶名
[ding@localhost ~]$ ps -fu ding 程序的發起者
UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD
ps示例
- 列出有效組名稱(或會話)所擁有的所有進程:
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
通過進程編號顯示進程的詳細信息
[root@localhost ~]# ps -fp 946
UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD
root ???????946 ?????1 ?0 16:42 ? ???????00:00:00 /usr/sbin/sshd -D
顯示指定進程下的子進程
[root@localhost ~]# pstree -p
systemd(1)─┬─ModemManager(581)─┬─{ModemManager}(614)
├─sshd(946)─┬─sshd(2376)───bash(2385)───pstree(3557)
│ ??????????├─sshd(2439)───bash(2445)───su(3427)───bash(3428)
│ ??????????└─sshd(2848)───bash(2853)
[root@localhost ~]# ps -f –ppid 946
UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD
root ??????2376 ???946 ?0 16:44 ? ???????00:00:00 sshd: root@pts/1
root ??????2439 ???946 ?0 16:46 ? ???????00:00:00 sshd: root@pts/2
root ??????2848 ???946 ?0 17:05 ? ???????00:00:00 sshd: root@pts/3
[root@localhost ~]# ps -f –ppid 2439
UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD
root ??????2445 ??2439 ?0 16:46 pts/2 ???00:00:00 -bash
ps示例
- 以進程樹顯示系統中的進程如何相互鏈接:
ps -e –forest
- 以進程樹顯示指定的進程
ps -f –forest -C sshd
ps -ef –forest | grep -v grep | grep sshd
- 要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及 NLWP(輕量級進程數)列:
ps -fL -C nginx
- 要列出所有格式說明符:
ps L
- 查看進程的PID,PPID,用戶名和命令:
ps -eo pid,ppid,user,cmd
以進程樹顯示系統中的進程如何相互鏈接:
[root@localhost ~]# ps -e –forest
PID TTY ?????????TIME CMD
2 ? ???????00:00:00 kthreadd
3 ? ???????00:00:00 ?\_ ksoftirqd/0
要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及 NLWP(輕量級進程數)列
[root@localhost ~]# ps -fL -C httpd.worker
UID ????????PID ??PPID ???LWP ?C NLWP STIME TTY ?????????TIME CMD
root ??????2897 ?????1 ??2897 ?0 ???1 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker
apache ????3014 ??2897 ??3014 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker
apache ????3014 ??2897 ??3016 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker
apache ????3014 ??2897 ??3017 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker
apache ????3014 ??2897 ??3018 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker
ps示例
- 自定義格式顯示文件系統組,ni值開始時間和進程的時間:
ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime
lstart:啟動時間
- 使用其PID查找進程名稱:
ps -p 1244 -o comm=
- 要以其名稱選擇特定進程,顯示其所有子進程
ps -C sshd,bash
- 查找指定進程名所有的所屬PID,在編寫需要從std輸出或文件讀取PID的腳本時這個參數很有用:
ps -C httpd,sshd -o pid=
- 檢查一個進程的執行時間 ?ps -eo comm,etime,user | grep nginx
查看進程名稱
[root@localhost ~]# ps -p 1 -o comm=
init
[root@localhost ~]# ps -p 1 -o comm=
systemd
顯示進程編號
[root@localhost ~]# ps -C httpd,sshd -o pid=
2017
2380
2808
[root@localhost ~]# ps -C httpd.worker -o pid=
2897
3014
查看一個進程的執行時間 etime:執行時間
[root@localhost ~]# ps -eo comm,etime,user | grep httpd
httpd.worker ?????????07:33 root
httpd.worker ?????????07:28 apache
ps示例
- 查找占用最多內存和CPU的進程:
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head
-%cpu表示倒序
- 顯示安全信息: ps -eM ps –context
- 使用以下命令以用戶定義的格式顯示安全信息
ps -eo euser,ruser,suser,fuser,f,comm,label
- 使用watch實用程序執行重復的輸出以實現對就程進行實時的監視,如下面的命令顯示每秒鐘的監視:
watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=%mem | head’
查看占用內存最大的進程
[root@localhost ~]# ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem
PID ??PPID CMD ????????????????????????%MEM %CPU
1694 ??1475 /usr/bin/gnome-shell ???????15.9 ?0.1
1915 ?????1 /usr/libexec/evolution-cale ?6.0 ?0.0
2126 ??1915 /usr/libexec/evolution-cale ?5.9 ?0.0
每秒排序一次,顯示前10個內存占用最高的進程
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1G
[root@localhost ~]# watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head’
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90334