目录
[2.1. 按进程状态分类(STAT 列)](#2.1. 按进程状态分类(STAT 列))
[2.2. 按运行方式分类](#2.2. 按运行方式分类)
[2.3. 按功能分类](#2.3. 按功能分类)
[2.4. 特殊进程](#2.4. 特殊进程)
一、进程查看命令
1、pstree
用于查看进程树之间的关系,谁是父进程,谁是子进程,可以清楚的看出来是谁创建了谁
用法:
pstree [选项]
选项:
-A | 各进程树之间的连接以ASCII码字符来连接 |
---|---|
-U | :各进程树之间的连接以utf8字符来连接,某些终端可能会有错误 |
-p | 同时列出每个进程的PID |
-u | 同时列出每个进程的所属账号名称 |
[root@bogon ~]# pstree
systemd─┬─ModemManager───3*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─accounts-daemon───3*[{accounts-daemon}]
├─alsactl
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─chronyd
├─colord───3*[{colord}]
├─crond
├─cupsd
├─dbus-broker-lau───dbus-broker
├─fwupd───4*[{fwupd}]
├─gdm─┬─gdm-session-wor─┬─gdm-wayland-ses─┬─gnome-session-b───3*[{gnome-session-b}]
│ │ │ └─2*[{gdm-wayland-ses}]
│ │ └─2*[{gdm-session-wor}]
│ └─2*[{gdm}]
├─gnome-keyring-d───3*[{gnome-keyring-d}]
├─irqbalance───{irqbalance}
├─lsmd
├─mcelog
├─nginx───2*[nginx]
├─polkitd───5*[{polkitd}]
├─power-profiles-───2*[{power-profiles-}]
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─sshd───sshd───sshd─┬─bash───pstree
│ └─sftp-server
├─sssd_kcm
├─switcheroo-cont───2*[{switcheroo-cont}]
├─systemd─┬─(sd-pam)
│ ├─at-spi-bus-laun─┬─dbus-broker-lau───dbus-broker
│ │ └─3*[{at-spi-bus-laun}]
│ ├─at-spi2-registr───2*[{at-spi2-registr}]
│ ├─dbus-broker-lau───dbus-broker
│ ├─dconf-service───2*[{dconf-service}]
│ ├─evolution-addre───5*[{evolution-addre}]
│ ├─evolution-calen───8*[{evolution-calen}]
│ ├─evolution-sourc───3*[{evolution-sourc}]
│ ├─2*[gjs───4*[{gjs}]]
│ ├─gnome-session-b─┬─evolution-alarm───5*[{evolution-alarm}]
│ │ ├─gnome-software───3*[{gnome-software}]
│ │ ├─gsd-disk-utilit───2*[{gsd-disk-utilit}]
│ │ └─3*[{gnome-session-b}]
│ ├─gnome-session-c───{gnome-session-c}
│ ├─gnome-shell─┬─Xwayland
│ │ ├─gnome-control-c───3*[{gnome-control-c}]
│ │ ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
│ │ │ ├─ibus-engine-sim───2*[{ibus-engine-sim}]
│ │ │ ├─ibus-extension-───3*[{ibus-extension-}]
│ │ │ └─2*[{ibus-daemon}]
│ │ └─8*[{gnome-shell}]
│ ├─gnome-shell-cal───5*[{gnome-shell-cal}]
│ ├─gnome-terminal-─┬─bash
│ │ └─3*[{gnome-terminal-}]
│ ├─goa-daemon───3*[{goa-daemon}]
│ ├─goa-identity-se───3*[{goa-identity-se}]
│ ├─gsd-a11y-settin───3*[{gsd-a11y-settin}]
│ ├─gsd-color───3*[{gsd-color}]
│ ├─gsd-datetime───3*[{gsd-datetime}]
│ ├─gsd-housekeepin───3*[{gsd-housekeepin}]
│ ├─gsd-keyboard───3*[{gsd-keyboard}]
│ ├─gsd-media-keys───3*[{gsd-media-keys}]
│ ├─gsd-power───3*[{gsd-power}]
│ ├─gsd-print-notif───2*[{gsd-print-notif}]
│ ├─gsd-printer───2*[{gsd-printer}]
│ ├─gsd-rfkill───2*[{gsd-rfkill}]
│ ├─gsd-screensaver───2*[{gsd-screensaver}]
│ ├─gsd-sharing───3*[{gsd-sharing}]
│ ├─gsd-smartcard───5*[{gsd-smartcard}]
│ ├─gsd-sound───3*[{gsd-sound}]
│ ├─gsd-usb-protect───3*[{gsd-usb-protect}]
│ ├─gsd-wacom───3*[{gsd-wacom}]
│ ├─gsd-xsettings───3*[{gsd-xsettings}]
│ ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
│ ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
│ ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
│ ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]
│ ├─gvfsd─┬─gvfsd-dnssd───2*[{gvfsd-dnssd}]
│ │ ├─gvfsd-network───3*[{gvfsd-network}]
│ │ ├─gvfsd-trash───2*[{gvfsd-trash}]
│ │ └─2*[{gvfsd}]
│ ├─gvfsd-fuse───5*[{gvfsd-fuse}]
│ ├─gvfsd-metadata───2*[{gvfsd-metadata}]
│ ├─ibus-portal───2*[{ibus-portal}]
│ ├─ibus-x11───2*[{ibus-x11}]
│ ├─vmtoolsd───3*[{vmtoolsd}]
│ └─xdg-permission-───2*[{xdg-permission-}]
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─udisksd───4*[{udisksd}]
├─upowerd───2*[{upowerd}]
├─vmtoolsd───2*[{vmtoolsd}]
├─vmware-vmblock-───2*[{vmware-vmblock-}]
└─wpa_supplicant
2、ps
显示系统当前进程瞬间运行状态
用法:
ps [选项]
选项:
-A | 所有的进程均显示出来,与 -e 具有同样的效用 |
---|---|
-a | 显示现行终端机下的所有进程,包括其他用户的进程 |
-u | 以用户为主的进程状态 |
-x | 通常与 a 这个参数一起使用,可列出较完整信息 |
-l | 较长、较详细的将该PID 的的信息列出 |
[root@bogon ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 174616 18056 ? Ss 04:06 0:03 /usr/lib/systemd/systemd rhgb --switched-root --system
root 2 0.0 0.0 0 0 ? S 04:06 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 04:06 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 04:06 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 04:06 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< 04:06 0:00 [netns]
root 10 0.0 0.0 0 0 ? I< 04:06 0:00 [mm_percpu_wq]
root 12 0.0 0.0 0 0 ? I 04:06 0:00 [rcu_tasks_kthre]
root 13 0.0 0.0 0 0 ? I 04:06 0:00 [rcu_tasks_rude_]
root 14 0.0 0.0 0 0 ? I 04:06 0:00 [rcu_tasks_trace]
root 15 0.0 0.0 0 0 ? S 04:06 0:05 [ksoftirqd/0]
root 16 0.0 0.0 0 0 ? S 04:06 0:00 [pr/tty0]
root 17 0.0 0.0 0 0 ? I 04:06 0:42 [rcu_preempt]
root 18 0.0 0.0 0 0 ? S 04:06 0:00 [migration/0]
root 19 0.0 0.0 0 0 ? S 04:06 0:00 [idle_inject/0]
root 21 0.0 0.0 0 0 ? S 04:06 0:00 [cpuhp/0]
root 22 0.0 0.0 0 0 ? S 04:06 0:00 [cpuhp/1]
root 23 0.0 0.0 0 0 ? S 04:06 0:00 [idle_inject/1]
root 24 0.0 0.0 0 0 ? S 04:06 0:02 [migration/1]
root 25 0.0 0.0 0 0 ? S 04:06 0:04 [ksoftirqd/1]
root 29 0.0 0.0 0 0 ? S 04:06 0:00 [kdevtmpfs]
root 30 0.0 0.0 0 0 ? I< 04:06 0:00 [inet_frag_wq]
root 31 0.0 0.0 0 0 ? S 04:06 0:00 [kauditd]
root 33 0.0 0.0 0 0 ? S 04:06 0:00 [khungtaskd]
root 34 0.0 0.0 0 0 ? S 04:06 0:00 [oom_reaper]
root 35 0.0 0.0 0 0 ? I< 04:06 0:00 [writeback]
root 36 0.0 0.0 0 0 ? S 04:06 0:02 [kcompactd0]
root 37 0.0 0.0 0 0 ? SN 04:06 0:00 [ksmd]
root 38 0.0 0.0 0 0 ? SN 04:06 0:02 [khugepaged]
root 39 0.0 0.0 0 0 ? I< 04:06 0:00 [cryptd]
root 40 0.0 0.0 0 0 ? I< 04:06 0:00 [kintegrityd]
root 41 0.0 0.0 0 0 ? I< 04:06 0:00 [kblockd]
root 42 0.0 0.0 0 0 ? I< 04:06 0:00 [blkcg_punt_bio]
输出解析:
-
USER
:进程的所有者。 -
PID
:进程的 ID。 -
%CPU
:进程占用的 CPU 百分比。 -
%MEM
:进程占用的内存百分比。 -
VSZ
:进程使用的虚拟内存大小。 -
RSS
:进程使用的物理内存大小。 -
TTY
:进程所在的终端。 -
STAT
:进程的状态,如S
(休眠)、R
(运行)、Z
(僵尸进程)等。 -
START
:进程的启动时间。 -
TIME
:进程运行的时间。 -
COMMAND
:启动进程的命令。
进程状态:
S:休眠
s:父进程
R:运行
Z:僵尸进程(前台程序已死,但后台驻留进程没有正常退出;后果就是占用资源不干活。)
在 Linux 中,ps aux
命令用于显示当前系统中所有用户的进程信息。输出的每一列代表不同的属性,而进程本身并没有明确的"类型"分类,但我们可以根据进程的状态、运行方式或功能来区分它们的类别。以下是常见的进程分类:
2.1. 按进程状态分类(STAT 列)
ps aux
输出的 STAT
列(进程状态)会显示进程的当前状态,常见的状态码包括:
-
R (Running):正在运行或可运行(在运行队列中)。
-
S (Interruptible Sleep):休眠中(可被信号唤醒)。
-
D (Uninterruptible Sleep):不可中断的休眠(通常与硬件 I/O 相关)。
-
Z (Zombie):僵尸进程(已终止但未被父进程回收)。
-
T (Stopped) :被信号(如
Ctrl+Z
)或调试器暂停。 -
X (Dead):进程已完全终止(很少见到)。
-
< (High Priority):高优先级进程。
-
N (Low Priority):低优先级进程。
-
s (Session Leader):进程是会话的主进程。
-
l (Multi-threaded):多线程进程。
-
+ (Foreground Process):前台进程组。
2.2. 按运行方式分类
-
前台进程:与终端关联,接收用户输入(如命令行工具)。
-
后台进程 :通过
&
或bg
放入后台运行(STAT 中可能显示S
或R
)。 -
守护进程(Daemon) :系统服务进程,通常无终端关联(如
sshd
、nginx
),名称以d
结尾的常见。
2.3. 按功能分类
-
系统进程 :内核或系统服务(如
systemd
、kthreadd
),通常由 root 用户运行。 -
用户进程:由普通用户启动(如浏览器、终端应用)。
-
内核线程 :内核创建的线程(
ps aux
中名称用[]
括起,如[kworker]
),负责系统底层任务。
2.4. 特殊进程
-
僵尸进程(Zombie) :已终止但未被父进程调用
wait()
回收资源(需手动清理)。 -
孤儿进程 :父进程先终止,被
init/systemd
接管。
示例解析
运行 ps aux
的典型输出:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169896 13156 ? Ss May10 0:02 /sbin/init
mysql 789 0.5 5.0 1023456 50000 ? Sl May10 10:23 /usr/sbin/mysqld
user 1234 0.0 0.5 258000 40000 pts/0 R+ 12:00 0:00 ps aux
-
/sbin/init :系统守护进程(
STAT=Ss
,会话主进程)。 -
mysqld :MySQL 数据库守护进程(
STAT=Sl
,多线程且休眠中)。 -
ps aux :用户前台进程(
STAT=R+
,正在运行且在前台)。
注意:ps -elf显示的信息比ps aux更为详细
3、pgrep
查看进程的信息,包括进程是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。 pgrep通过匹配其程序名,找到匹配的进程
用法:
pgrep [选项] pidname
选项:
-l | 同时显示进程名和PID |
---|---|
-o | 当匹配多个同一命令启动的进程时,显示进程号最小的那个 |
-n | 当匹配多个进程时,显示进程号最大的那个 |
注意:#pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程
pgrep [选项] pidname #先查找进程号
kill [选项] pid #用kill 结束进程
4、top、htop
top:动态监控系统处理器状态,htop姑且称之为top的增强版
yum install epel-release -y #安装epel源
yum install htop -y #安装htop
常用选项
-
-d
:指定更新的间隔时间,以秒为单位。 -
-n
:指定更新的次数。 -
-p
:监控指定进程的 ID。 -
-u
:监控指定用户的进程。
常用按键
-
空格键:立即刷新显示。
-
M:按照内存使用百分比对进程进行排序。
-
P:按照 CPU 使用百分比对进程进行排序。
-
T:按照进程运行时间对进程进行排序。
-
q:退出 top 命令。
-
h:显示帮助信息。
案例
`top -d 5`:每隔 5 秒更新一次进程信息。
`top -n 2`:更新两次进程信息后退出。
`top -p 1234`:监控进程 ID 为 1234 的进程。
`top -u root`:监控 root 用户的进程。
[root@bogon ~]# top
top - 20:41:32 up 16:35, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 309 total, 2 running, 307 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.7 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
MiB Mem : 3627.6 total, 735.3 free, 1524.1 used, 1654.7 buff/cache
MiB Swap: 4012.0 total, 4007.5 free, 4.5 used. 2103.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 174616 18056 10772 S 0.0 0.5 0:03.87 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 slub_flushwq
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
12 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_kthre
13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_rude_
14 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_trace
15 root 20 0 0 0 0 S 0.0 0.0 0:05.46 ksoftirqd/0
16 root 20 0 0 0 0 S 0.0 0.0 0:00.01 pr/tty0
17 root 20 0 0 0 0 I 0.0 0.0 0:42.55 rcu_preempt
18 root rt 0 0 0 0 S 0.0 0.0 0:00.40 migration/0
19 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
23 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1
24 root rt 0 0 0 0 S 0.0 0.0 0:02.28 migration/1
25 root 20 0 0 0 0 S 0.0 0.0 0:04.88 ksoftirqd/1
29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
30 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 inet_frag_wq
[root@bogon ~]# htop
0[ 0.0%] Tasks: 112, 216 thr, 197 kthr; 0 running
1[| 1.3%] Load average: 0.00 0.00 0.00
Mem[||||||||||||||||||||||||||||||||||||||||||1.24G/3.54G] Uptime: 16:35:45
Swp[|| 3.68M/3.92G]
[Main] [I/O]
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 170M 18056 10772 S 0.0 0.5 0:03.86 /usr/lib/systemd/systemd rhgb --switched-root --system
722 root 20 0 27216 11776 10240 S 0.0 0.3 0:00.93 ├─ /usr/lib/systemd/systemd-journald
738 root 20 0 148M 3320 1024 S 0.0 0.1 0:00.00 ├─ vmware-vmblock-fuse /run/vmblock-fuse -o rw,subtype=
739 root 20 0 148M 3320 1024 S 0.0 0.1 0:00.00 │ ├─ vmware-vmblock-fuse /run/vmblock-fuse -o rw,subty
740 root 20 0 148M 3320 1024 S 0.0 0.1 0:00.00 │ └─ vmware-vmblock-fuse /run/vmblock-fuse -o rw,subty
741 root 20 0 36740 13628 8960 S 0.0 0.4 0:00.44 ├─ /usr/lib/systemd/systemd-udevd
854 root 19 -1 91832 4484 1664 S 0.0 0.1 0:02.37 ├─ /sbin/auditd
855 root 16 -4 91832 4484 1664 S 0.0 0.1 0:00.10 │ ├─ /sbin/auditd
856 root 16 -4 7788 3328 2944 S 0.0 0.1 0:00.60 │ ├─ /usr/sbin/sedispatch
857 root 16 -4 91832 4484 1664 S 0.0 0.1 0:00.50 │ └─ /sbin/auditd
877 dbus 20 0 10952 4584 3840 S 0.0 0.1 0:00.02 ├─ /usr/bin/dbus-broker-launch --scope system --audit
878 dbus 20 0 10300 5668 2304 S 0.0 0.2 0:00.66 │ └─ dbus-broker --log 4 --controller 9 --machine-id b
879 avahi 20 0 15932 6656 5760 S 0.0 0.2 0:00.82 ├─ avahi-daemon: running [linux.local]
918 avahi 20 0 15664 1972 1152 S 0.0 0.1 0:00.00 │ └─ avahi-daemon: chroot helper
880 root 20 0 9752 5248 4864 S 0.0 0.1 0:00.02 ├─ /usr/libexec/bluetooth/bluetoothd
883 root 20 0 79256 5024 2688 S 0.0 0.1 0:02.98 ├─ /usr/sbin/irqbalance --foreground
892 root 20 0 79256 5024 2688 S 0.0 0.1 0:00.00 │ └─ /usr/sbin/irqbalance --foreground
884 libstorage 20 0 2704 1792 1664 S 0.0 0.0 0:00.21 ├─ /usr/bin/lsmd -d
885 root 20 0 2816 1920 1792 S 0.0 0.1 0:00.00 ├─ /usr/sbin/mcelog --daemon --foreground
886 polkitd 20 0 2454M 27696 19772 S 0.0 0.7 0:00.57 ├─ /usr/lib/polkit-1/polkitd --no-debug
F1Help F2Setup F3SearchF4FilterF5List F6SortByF7Nice -F8Nice +F9Kill F10Quit
未完,敬请期待