Linux进程管理

目录

一、进程查看命令

1、pstree

2、ps

[2.1. 按进程状态分类(STAT 列)](#2.1. 按进程状态分类(STAT 列))

[2.2. 按运行方式分类](#2.2. 按运行方式分类)

[2.3. 按功能分类](#2.3. 按功能分类)

[2.4. 特殊进程](#2.4. 特殊进程)

3、pgrep

4、top、htop


一、进程查看命令

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 中可能显示 SR)。

  • 守护进程(Daemon) :系统服务进程,通常无终端关联(如 sshdnginx),名称以 d 结尾的常见。


2.3. 按功能分类
  • 系统进程 :内核或系统服务(如 systemdkthreadd),通常由 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                          

未完,敬请期待                     
相关推荐
拍客圈2 小时前
单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
运维·服务器·redis
aigoushan4 小时前
零基础开始的网工之路第二十一天------性能优化
运维·服务器·网络
小声读源码4 小时前
【技巧】使用frpc安全地内网穿透ssh访问内网机器
运维·安全·ssh·内网穿透·frpc
guygg884 小时前
Linux中的阻塞信号与信号原理
linux·mysql·apache
mxpan4 小时前
Alpine Docker 容器中安装包缓存与 C/C++ 运行问题
运维·docker·容器
眠りたいです5 小时前
MySQL基础与常用数据类型浅析
linux·数据库·mysql
芊言芊语5 小时前
CAN2.0、DoIP、CAN-FD汽车协议详解与应用
运维·服务器·网络
听风lighting5 小时前
1. C++ WebServer项目分享
linux·c语言·c++·设计模式·嵌入式·webserver
chengf2236 小时前
WSL 安装使用和常用命令
linux
Lz__Heng6 小时前
记一次使用HPE SSMC管理停用HPE 3par存储报连接出错
运维·存储