linux中进程命令ps

ps命令
Linux是一个多任务、多用户的操作系统,因此它允许多个进程同时运行而不相互干扰,进程是Linux操作系统的重要基本概念之一,进程是程序的执行实例,在操作系统中执行不同的任务。Linux为我们提供了一个名为ps的实用程序,用于查看与系统上的进程相关的信息,它是process status进程状态的缩写,ps命令用于列出当前正在运行的进程,它们的pid以及一些其他信息取决于不同的选项,它从/proc文件系统中的虚拟文件读取进程信息,/proc包含虚拟文件,这就是它被称为虚拟文件系统的原因,process status命令ps显示有关活动进程的信息,类似于windows的任务管理器,每个操作系统的ps版本都略有不同,因此若要是需要获取详细情况则需要查阅操作系统的wiki。

参数
ps命令有多种类别的参数可以选择: simple|list|output|threads|misc|all。
Simple Process Selection
-A, -e: 选择所有进程。
-a: 选择除会话引线和与终端无关的进程之外的所有进程。
a: 列出带有终端tty的所有进程,包括其他用户进程,或者在与x选项一起使用时列出所有进程。
-d: 选择除会话所属者以外的所有进程。
-N, --deselect: 选择除满足指定条件的进程以外的所有进程。
r: 将选择限制为仅运行进程。
T: 选择与此终端关联的所有进程。
x: 列出拥有的所有进程(和ps相同的EUID),或者在和a选项一起使用时列出所有进程。
Process Selection By List
-C <command>: 按命令名选择,这将选择其可执行名称在command中给定的进程。
-G, --Group <GID>: 按真实组ID (RGID)或名称选择,这将选择其真实组名或ID在grplist列表中的进程。
-g, --group <group>: 按会话或有效组名选择。
-p, p, --pid <PID>: 按进程ID选择。
--ppid <PID>: 按父进程ID选择,这将选择pidlist中具有父进程ID的进程,也就是说,它选择的进程是pidlist中列出的那些进程的子进程。
-q, q, --quick-pid <PID>: 按进程ID选择(快速模式)。
-s, --sid <session>: 按会话ID选择。
-t, t, --tty <tty>: 通过tty (terminal)选择。
-u, U, --user <UID>: 根据有效的用户ID (EUID)或名称选择。
-U, --User <UID>: 按真实用户ID (RUID)或名称选择。
Output Format Control
-F: 额外的完整格式。
-f: 进行全格式列表,可以将此选项与其他UNIX样式的选项结合使用以添加其他列,它还会导致命令参数被打印,与-L一起使用时,将添加NLWP线程数和LWP线程ID列。
f, --forest: ASCII art进程层次结构,如许多树,也称为林。
-H: 显示进程层次结构()。
-j: 作业格式。
j: BSD作业控制格式。
-l: 长格式,-y选项通常对此很有用。
l: 显示BSD长格式。
-M, Z: 对于SE Linux添加一列安全数据。
-O <format>: 使用默认列预加载。
O <format>: 与-O类似,具有BSD特性。
-o, o, --format <format>: 指定用户定义的格式。
s: 显示信号格式。
u: 显示面向用户的格式。
v: 显示虚拟内存格式。
X: 寄存器格式。
-y: 不显示标志,显示rss代替addr,此选项只能与-l一起使用。
--context: 使用SE Linux时,显示安全上下文格式。
--headers: 重复标题行,每页输出一行。
--no-headers: 完全不打印标题行。
--cols, --columns, --width <num>: 设置屏幕宽度。
--rows, --lines <num>: 设置屏幕高度。
Thread Display
H: 将线程显示为进程。
-L: 显示线程,可能带有LWP和NLWP列。
-m, m: 在进程之后显示线程。
-T: 显示线程,可能带有SPID列。
Miscellaneous options
-c: 为-l选项显示不同的调度程序信息。
c: 显示真实的命令名称。
e: 在命令后显示环境。
k, --sort: 指定排序顺序为[+|-]key[,[+|-]key[,...]]。
L: 显示格式说明符。
n: 显示数字uid和wchan。
S, --cumulative: 包含一些dead子进程数据。
-y: 不显示标志,显示rss,仅与-l一起使用。
-V, V, --version: 显示版本信息。
-w, w: 无限制的输出宽度。

示例
显示当前shell的进程。
ps

[root@tym tian]# ps
  PID TTY          TIME CMD
29221 pts/0    00:00:00 su
29231 pts/0    00:00:00 bash
29245 pts/0    00:00:00 ps

查看所有正在运行的进程。
ps -e

[root@tym tian]# ps -e
  PID TTY          TIME CMD
    1 ?        02:20:13 systemd
    2 ?        00:00:00 kthreadd
    4 ?        00:00:00 kworker/0:0H
    6 ?        00:09:28 ksoftirqd/0
    7 ?        00:00:00 migration/0
    8 ?        00:00:00 rcu_bh
    9 ?        02:14:18 rcu_sched
   10 ?        00:00:00 lru-add-drain
   11 ?        00:04:41 watchdog/0
   13 ?        00:00:00 kdevtmpfs
   14 ?        00:00:00 netns
   15 ?        00:00:30 khungtaskd
   16 ?        00:00:00 writeback
   17 ?        00:00:00 kintegrityd
   18 ?        00:00:00 bioset
   19 ?        00:00:00 bioset
   20 ?        00:00:00 bioset
   21 ?        00:00:00 kblockd
   22 ?        00:00:00 md

通常查看所有进程可以与管道以及grep命令结合用以过滤
ps -e | grep nginx

[root@tym tian]#  ps -e | grep nginx
23456 ?        00:00:00 nginx
23458 ?        00:00:20 nginx

查看除会话引线和未与终端关联的进程之外的所有进程。
ps -a

[root@tym tian]# ps -a
  PID TTY          TIME CMD
29221 pts/0    00:00:00 su
29231 pts/0    00:00:00 bash
29385 pts/0    00:00:00 ps

查看www用户的所有进程。
ps -u tian

[root@tym tian]# ps -u tian
  PID TTY          TIME CMD
29171 ?        00:00:00 sshd
29175 pts/0    00:00:00 bash
29200 ?        00:00:00 sshd
29201 ?        00:00:00 sftp-server

查看www组的所有进程。
ps -G www

[root@tym tian]# ps -G tian
  PID TTY          TIME CMD
29171 ?        00:00:00 sshd
29175 pts/0    00:00:00 bash
29200 ?        00:00:00 sshd
29201 ?        00:00:00 sftp-server
29221 pts/0    00:00:00 su

使用-f查看完整格式列表。
ps -f

[root@tym tian]# ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root     29221 29175  0 21:53 pts/0    00:00:00 su
root     29231 29221  0 21:54 pts/0    00:00:00 bash
root     29513 29231  0 21:58 pts/0    00:00:00 ps -f

按用户自定义格式查看进程。
ps -aN --format cmd,pid,user,ppid

[root@tym tian]# ps -aN --format cmd,pid,user,ppid
CMD                           PID USER      PPID
/usr/lib/systemd/systemd --     1 root         0
[kthreadd]                      2 root         0
[kworker/0:0H]                  4 root         2
[ksoftirqd/0]                   6 root         2
[migration/0]                   7 root         2
[rcu_bh]                        8 root         2
[rcu_sched]                     9 root         2
[lru-add-drain]                10 root         2
[watchdog/0]                   11 root         2

根据内存占用情况将进程排序。
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

[root@tym tian]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
  PID  PPID CMD                         %MEM %CPU
14744 14674 /usr/sbin/mysqld --basedir= 10.9  0.2
16907 16904 php-fpm: pool www            2.4  0.0
16906 16904 php-fpm: pool www            2.4  0.0
19889 16904 php-fpm: pool www            2.4  0.0
19894 16904 php-fpm: pool www            2.4  0.0
 6440 16904 php-fpm: pool www            2.2  0.0
19888 16904 php-fpm: pool www            2.1  0.0
19895 16904 php-fpm: pool www            2.1  0.0
19892 16904 php-fpm: pool www            2.1  0.0

显示所有当前进程,为了便于查看可以结合管道和less命令来使用。
ps -ax | less

  PID TTY      STAT   TIME COMMAND
    1 ?        Ss   140:13 /usr/lib/systemd/systemd --system --deserialize 27
    2 ?        S      0:00 [kthreadd]
    4 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      9:28 [ksoftirqd/0]
    7 ?        S      0:00 [migration/0]
    8 ?        S      0:00 [rcu_bh]

使用aux参数,加入CPU与内存用量信息,来显示全面的信息。
ps -aux | less
根据CPU使用将进程降序排序。
ps -aux --sort -pcpu | less

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      8020  2.1  0.7 132292 13248 ?        S<sl Feb22 802:22 /usr/local/aegis/aegis_client/aegis_11_19/AliYunDun
mysql    14744  0.2 10.9 1319400 206924 ?      Sl    2019 2581:09 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tym.err --pid-file=/var/lib/mysql/tym.pid
root         1  0.0  0.1 191204  3140 ?        Ss    2019 140:13 /usr/lib/systemd/systemd --system --deserialize 27
root         2  0.0  0.0      0     0 ?        S     2019   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<    2019   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S     2019   9:28 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S     2019   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S     2019   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R     2019 134:18 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<    2019   0:00 [lru-add-drain]

根据内存使用将进程降序排序。
ps -aux --sort -pmem | less

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql    14744  0.2 10.9 1319400 206924 ?      Sl    2019 2581:09 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tym.err --pid-file=/var/lib/mysql/tym.pid
apache   16907  0.0  2.4 423712 46896 ?        S     2020  13:36 php-fpm: pool www
apache   16906  0.0  2.4 423492 46700 ?        S     2020  13:34 php-fpm: pool www
apache   19889  0.0  2.4 422908 46312 ?        S     2020  13:08 php-fpm: pool www
apache   19894  0.0  2.4 423204 45228 ?        S     2020  13:10 php-fpm: pool www
apache    6440  0.0  2.2 418440 42148 ?        S     2020  13:36 php-fpm: pool www
apache   19888  0.0  2.1 417888 41296 ?        S     2020  13:09 php-fpm: pool www
apache   19895  0.0  2.1 417404 40948 ?        S     2020  13:06 php-fpm: pool www
apache   19892  0.0  2.1 417152 40676 ?        S     2020  13:14 php-fpm: pool www
apache   16908  0.0  2.1 417140 40668 ?        S     2020  13:36 php-fpm: pool www
apache    5424  0.0  2.1 416916 40444 ?        S     2020  13:36 php-fpm: pool www
apache   16909  0.0  2.1 416372 39896 ?        S     2020  13:39 php-fpm: pool www
apache   13608  0.0  2.1 417680 39856 ?        S     2020  13:18 php-fpm: pool www
apache   19893  0.0  2.0 415340 39040 ?        S     2020  13:14 php-fpm: pool www

合并内存与CPU的整体使用情况进行排序,并只显示前10个结果。
ps -aux --sort -pcpu,+pmem | head -n 10

[root@tym tian]# ps -aux --sort -pcpu,+pmem | head -n 10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      8020  2.1  0.7 132292 13248 ?        S<sl Feb22 802:23 /usr/local/aegis/aegis_client/aegis_11_19/AliYunDun
mysql    14744  0.2 10.9 1319400 206924 ?      Sl    2019 2581:09 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tym.err --pid-file=/var/lib/mysql/tym.pid
root         2  0.0  0.0      0     0 ?        S     2019   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<    2019   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S     2019   9:28 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S     2019   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S     2019   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R     2019 134:18 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<    2019   0:00 [lru-add-drain]

查看某个进程启动时间:
ps -o lstart -p 23456

[root@tym tian]#  ps -o lstart -p 23456
                 STARTED
Fri May 28 00:24:52 2021

你可能感兴趣的:(linux,centos,运维)