Linux命令 - ps命令

  ps是process status的缩写,在Linux中 ps 命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
  要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)

  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

  • D 不可中断 uninterruptible sleep (usually IO)

  • R 运行 runnable (on run queue)

  • S 中断 sleeping

  • T 停止 traced or stopped

  • Z 僵死 a defunct (”zombie”) process

1.语法:

ps [参数]

2.功能:

  用来显示当前进程的状态,类似于 windows 的任务管理器。

3.参数:
-a  显示所有终端机下执行的程序,除了阶段作业领导者之外。
a  显示现行终端机下的所有程序,包括其他用户的程序。
-A  显示所有程序。
-c  显示CLS和PRI栏位。
c  列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称>  指定执行指令的名称,并列出该指令的程序的状况。
-d  显示所有程序,但不包括阶段作业领导者的程序。
-e  此参数的效果和指定"A"参数相同。
e  列出程序时,显示每个程序所使用的环境变量。
-f  显示UID,PPIP,C与STIME栏位。
f  用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>  此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g  显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>  列出属于该群组的程序的状况,也可使用群组名称来指定。
h  不显示标题列。
-H  显示树状结构,表示程序间的相互关系。
-j或j  采用工作控制的格式显示程序状况。
-l或l  采用详细的格式来显示程序状况。
L  列出栏位的相关信息。
-m或m  显示所有的执行绪。
n  以数字来表示USER和WCHAN栏位。
-N  显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>  指定程序识别码,并列出该程序的状况。
p<程序识别码>  此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r  只列出现行终端机正在执行中的程序。
-s<阶段作业>  指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s  采用程序信号的格式显示程序状况。
S  列出程序时,包括已中断的子程序资料。
-t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>  此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T  显示现行终端机下的所有程序。
-u<用户识别码>  此参数的效果和指定"-U"参数相同。
u  以用户为主的格式来显示程序状况。
-U<用户识别码>  列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>  列出属于该用户的程序的状况。
v  采用虚拟内存的格式显示程序状况。
-V或V  显示版本信息。
-w或w  采用宽阔的格式来显示程序状况。 
x  显示所有程序,不以终端机来区分。
X  采用旧式的Linux i386登陆格式显示程序状况。
-y  配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码>  此参数的效果和指定"p"参数相同。
--cols<每列字符数>  设置每列的最大字符数。
--columns<每列字符数>  此参数的效果和指定"--cols"参数相同。
--cumulative  此参数的效果和指定"S"参数相同。
--deselect  此参数的效果和指定"-N"参数相同。
--forest  此参数的效果和指定"f"参数相同。
--headers  重复显示标题列。
--help  在线帮助。
--info  显示排错信息。
--lines<显示列数>  设置显示画面的列数。
--no-headers  此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异。
--group<群组名称>  此参数的效果和指定"-G"参数相同。
--Group<群组识别码>  此参数的效果和指定"-G"参数相同。
--pid<程序识别码>  此参数的效果和指定"-p"参数相同。
--rows<显示列数>  此参数的效果和指定"--lines"参数相同。
--sid<阶段作业>  此参数的效果和指定"-s"参数相同。
--tty<终端机编号>  此参数的效果和指定"-t"参数相同。
--user<用户名称>  此参数的效果和指定"-U"参数相同。
--User<用户识别码>  此参数的效果和指定"-U"参数相同。
--version  此参数的效果和指定"-V"参数相同。
--widty<每列字符数>  此参数的效果和指定"-cols"参数相同。
4.常用范例:

例一:显示所有进程信息

命令:ps -A

[root@localhost ~]# ps -APID TTY          TIME CMD1 ?        00:00:02 systemd2 ?        00:00:00 kthreadd3 ?        00:00:00 rcu_gp4 ?        00:00:00 rcu_par_gp6 ?        00:00:00 kworker/0:0H-kblockd9 ?        00:00:00 mm_percpu_wq10 ?        00:00:00 ksoftirqd/0……省略部分结果2897 pts/0    00:00:00 bash2928 pts/0    00:00:00 ps

例二:显示指定用户信息

命令:ps -u root

[root@localhost ~]# ps -u rootPID TTY          TIME CMD1 ?        00:00:02 systemd2 ?        00:00:00 kthreadd3 ?        00:00:00 rcu_gp4 ?        00:00:00 rcu_par_gp6 ?        00:00:00 kworker/0:0H-kblockd9 ?        00:00:00 mm_percpu_wq10 ?        00:00:00 ksoftirqd/0……省略部分结果2897 pts/0    00:00:00 bash2953 ?        00:00:00 sleep2956 pts/0    00:00:00 ps

例三:显示所有进程信息,连同命令行

命令:ps -ef

  查看进程的父进程ID可以使用ef。

[root@localhost ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 09:30 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root           2       0  0 09:30 ?        00:00:00 [kthreadd]
root           3       2  0 09:30 ?        00:00:00 [rcu_gp]
root           4       2  0 09:30 ?        00:00:00 [rcu_par_gp]
root           6       2  0 09:30 ?        00:00:00 [kworker/0:0H-kblockd]
root           9       2  0 09:30 ?        00:00:00 [mm_percpu_wq]
root          10       2  0 09:30 ?        00:00:00 [ksoftirqd/0]
……省略部分结果
root        2892    2116  0 09:43 ?        00:00:00 /usr/libexec/gnome-terminal-server
root        2897    2892  0 09:43 pts/0    00:00:00 bash
root        2978     971  0 09:46 ?        00:00:00 sleep 60
root        2979    2897  0 09:46 pts/0    00:00:00 ps -ef

显示信息说明:

  • UID:用户ID 。
  • PID:进程ID 。
  • PPID:父进程ID 。
  • C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高。
  • STIME:进程启动的时间 。
  • TTY:完整的终端名称。
  • TIME:CPU时间。
  • CMD:启动进程所用的命令和参数。

例四:查找特定进程

命令:ps -ef | grep server

[root@localhost ~]# ps -ef | grep server
root        2283    2116  0 09:32 ?        00:00:00 /usr/libexec/gnome-shell-calendar-server
root        2473    2390  0 09:32 ?        00:00:00 /usr/libexec/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.Calendarx2390x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/Calendar/2390/2
root        2509    2495  0 09:32 ?        00:00:00 /usr/libexec/evolution-addressbook-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.AddressBookx2495x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/AddressBook/2495/2
root        2892    2116  0 09:43 ?        00:00:01 /usr/libexec/gnome-terminal-server
root        3014    2897  0 09:50 pts/0    00:00:00 grep --color=auto server

例五:将目前属于自己这次登入的 PID 与相关信息列示出来

命令:ps -l

  在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。

[root@localhost ~]# ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0    2897    2892  0  80   0 -  6970 -      pts/0    00:00:00 bash
0 R     0    3047    2897  0  80   0 - 11414 -      pts/0    00:00:00 ps

显示信息说明:

  • F :这个程序的旗标 (flag), 4 代表使用者为 super user。
  • S :程序的状态 (STAT),关于各 STAT 的意义将在内文介绍。
  • UID:程序被该 UID 所拥有。
  • PID:就是这个程序的 ID。
  • PPID:则是其上级父程序的ID。
  • C:CPU 使用的资源百分比。
  • PRI:这个是 Priority (优先执行序) 的缩写,详细后面介绍。
  • NI:是 Nice 值,在下一小节我们会持续介绍。
  • ADDR:是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-”。
  • SZ:使用掉的内存大小。
  • WCHAN:目前这个程序是否正在运作当中,若为 - 表示正在运作。
  • TTY:登入者的终端机位置。
  • TIME:使用掉的 CPU 时间。
  • CMD:所下达的指令为何。

例六:列出目前所有的正在内存当中的程序

命令:ps aux

  查看进程的CPU占用率和内存占用率可以使用aux。

[root@localhost ~]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.5 245616 10152 ?        Ss   09:30   0:02 /usr/lib/systemd/systemd --switched-root --system --deserial
root           2  0.0  0.0      0     0 ?        S    09:30   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   09:30   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   09:30   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   09:30   0:00 [kworker/0:0H-kblockd]
root           9  0.0  0.0      0     0 ?        I<   09:30   0:00 [mm_percpu_wq]
root          10  0.0  0.0      0     0 ?        S    09:30   0:00 [ksoftirqd/0]
……省略部分结果
root        2897  0.0  0.3  27880  5736 pts/0    Ss   09:43   0:00 bash
root        2995  0.0  0.0      0     0 ?        I    09:48   0:00 [kworker/0:0-events]
root        3071  0.0  0.0      0     0 ?        I    09:53   0:00 [kworker/0:2-ata_sff]
root        3095  0.0  0.0   7496   852 ?        S    09:56   0:00 sleep 60
root        3103  0.0  0.2  58908  3924 pts/0    R+   09:57   0:00 ps aux

显示信息说明:

  • USER:该进程是由哪个用户产生的。
  • PID:进程的ID号。
  • %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源。
  • %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源。
  • VSZ:该进程占用虚拟内存的大小,单位KB。
  • RSS:该进程占用实际物理内存的大小,单位KB。
  • TTY:该进程是在哪个终端中运行的。若与终端机无关,则显示 ?,tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端,pts/0-255代表虚拟终端。
  • STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台。
  • START:该进程的启动时间。
  • TIME:该进程占用CPU的运算时间,注意不是系统时间。
  • COMMAND:产生此进程的命令名。

例七:列出类似程序树的程序显示

命令:ps -axjf

[root@localhost ~]# ps -axjfPPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND0       2       0       0 ?             -1 S        0   0:00 [kthreadd]2       3       0       0 ?             -1 I<       0   0:00  \_ [rcu_gp]2       4       0       0 ?             -1 I<       0   0:00  \_ [rcu_par_gp]2       6       0       0 ?             -1 I<       0   0:00  \_ [kworker/0:0H-kblockd]2       9       0       0 ?             -1 I<       0   0:00  \_ [mm_percpu_wq]2      10       0       0 ?             -1 S        0   0:00  \_ [ksoftirqd/0]……省略部分结果2116    2625    2625    2625 ?             -1 Ssl      0   0:00  \_ /usr/libexec/gvfsd-metadata2116    2892    2892    2892 ?             -1 Ssl      0   0:02  \_ /usr/libexec/gnome-terminal-server2892    2897    2897    2897 pts/0       3343 Ss       0   0:00      \_ bash2897    3343    3343    2897 pts/0       3343 R+       0   0:00          \_ ps -axjf1    2142    2141    2141 ?             -1 Sl       0   0:00 /usr/bin/gnome-keyring-daemon --daemonize --login1    2271    2258    2146 tty2        2146 Sl       0   0:00 /usr/libexec/ibus-x11 --kill-daemon1    2399    2398    2398 ?             -1 S<l      0   0:04 /usr/bin/pulseaudio --start1    2469    2146    2146 tty2        2146 Sl+      0   0:00 /usr/libexec/gsd-printer1    2544    2146    2146 tty2        2146 Sl+      0   0:01 /usr/bin/vmtoolsd -n vmusr --uinputFd 31    2624    2624    2624 ?             -1 Ssl      0   0:00 /usr/libexec/fwupd/fwupd1    2794    2794    2794 ?             -1 Ss       0   0:01 /usr/libexec/sssd/sssd_kcm --uid 0 --gid 0 --logger=files

例八:找出与 cron 与 syslog 这两个服务有关的 PID 号码

命令:ps aux | egrep '(cron|syslog)'

[root@localhost ~]# ps aux | egrep '(cron|syslog)'
dbus         884  0.0  0.3  94324  7124 ?        Ssl  09:30   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root        1301  0.0  0.4 211564  8552 ?        Ssl  09:30   0:00 /usr/sbin/rsyslogd -n
root        1317  0.0  0.1  23512  2192 ?        Ss   09:30   0:00 /usr/sbin/crond -n
gdm         1798  0.0  0.2  85036  5080 ?        Ssl  09:30   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root        2150  0.0  0.3  85524  5932 ?        Ssl  09:32   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root        3367  0.0  0.1  12324  2424 pts/0    R+   10:03   0:00 grep -E --color=auto (cron|syslog)

例九:分页查看进程

命令:ps -aux |more

[root@localhost ~]# ps -aux |more
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.5 245616 10152 ?        Ss   09:30   0:02 /usr/lib/systemd/systemd --switched-root --system --deserial
ize 17
root           2  0.0  0.0      0     0 ?        S    09:30   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   09:30   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   09:30   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   09:30   0:00 [kworker/0:0H-kblockd]
root           9  0.0  0.0      0     0 ?        I<   09:30   0:00 [mm_percpu_wq]
root          10  0.0  0.0      0     0 ?        S    09:30   0:00 [ksoftirqd/0]
root          11  0.0  0.0      0     0 ?        I    09:30   0:00 [rcu_sched]
root          12  0.0  0.0      0     0 ?        S    09:30   0:00 [migration/0]
root          13  0.0  0.0      0     0 ?        S    09:30   0:00 [watchdog/0]
root          14  0.0  0.0      0     0 ?        S    09:30   0:00 [cpuhp/0]
root          16  0.0  0.0      0     0 ?        S    09:30   0:00 [kdevtmpfs]
root          17  0.0  0.0      0     0 ?        I<   09:30   0:00 [netns]
root          18  0.0  0.0      0     0 ?        S    09:30   0:00 [kauditd]
root          19  0.0  0.0      0     0 ?        S    09:30   0:00 [khungtaskd]
root          20  0.0  0.0      0     0 ?        S    09:30   0:00 [oom_reaper]
--更多--

例十:把所有进程显示出来,并输出到ps001.txt文件

命令:ps -aux > ps001.txt

例十一:输出指定的字段

命令:ps -o pid,ppid,pgrp,session,tpgid,comm

[root@localhost ~]# ps -o pid,ppid,pgrp,session,tpgid,commPID    PPID    PGRP    SESS   TPGID COMMAND2897    2892    2897    2897    3800 bash3800    2897    3800    2897    3800 ps

Linux命令 - ps命令相关推荐

  1. 监控io性能, free命令, ps命令, 查看网络状态, linux下抓包

    2019独角兽企业重金招聘Python工程师标准>>> 监控io性能 free命令 ps命令 查看网络状态 linux下抓包 --- 监控io性能 查看磁盘 iostat 和sar属 ...

  2. linux系统ps命令的参数a与-a表示的讨论

    前言 在刘遄老师所著的<linux就该这么学>中ps 命令用于查看系统中的进程状态,格式为"ps [参数]".书中对于ps命令有一定的介绍,为了加强自己的理解,所以我在 ...

  3. Linux操作系统PS命令详细 解析

    http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 Linux操作系统PS命令详细 解析 要对系统中进程 ...

  4. linux中的ps fx命令,Linux下ps命令详解 Linux下ps命令的详细使用方法

    Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断 ...

  5. Linux中ps命令ps -aux 和ps -ef 参数解释

    Linux中ps命令ps -aux 和ps -ef 参数解释 一.ps命令 1.1 ps -aux 1.2 ps -ef 一.ps命令 ps命令用于显示当前进程的状态,类似于 windows 的任务管 ...

  6. linux ps -ef命令输出详解,Linux下ps命令的10个基本例子

    在Linux下ps命令是用于查看系统上运行的进程的最基本的命令之一.它提供了当前进程的同时,如用户ID,CPU使用率,内存使用率,命令名称等,它不显示实时数据,如top或htop命令的详细信息.但是, ...

  7. linux环境下ps命令行,Linux下ps命令详解 Linux下ps命令的详细使用方法

    Linux下ps命令详解 Linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运 ...

  8. <Linux>《Linux 之 ps 命令详解大全(含实用命令)》

    <Linux 之 ps 命令详解大全(含实用命令)> 1 常用命令 1.1 显示所有当前进程 1.2 显示所有当前进程 1.3 显示所有当前进程 1.4 根据用户过滤进程 1.5 根据 C ...

  9. 【Linux】ps命令

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

最新文章

  1. 如何在Java中将String转换为int?
  2. Sentinel Dashboard 中修改规则同步到 Nacos
  3. 顶部标题栏(四)自定义ActionBar风格和样式
  4. 图片日志:泛型的作用/hashset的内部实现/常见运行期异常
  5. [AssertionError: nput tensor input format are different]
  6. Google 资深软件工程师 LeetCode 刷题笔记首次公开
  7. c# 结构体 4字节对齐_【专题4:平时遇到的问题】 之 【3.由结构体字节对齐引发的通信故障】...
  8. CuteEditor 5.0 的使用
  9. Maven项目设置仓库下载位置
  10. 关于Keil4 转到 Keil5以后的一些错误解决
  11. TensorFlow2.0:自定义层与自定义网络
  12. 【三次握手、四次挥手流程】及【长短链接区别】
  13. 数据结构顺序栈基本操作(C/C++实现)
  14. 99%的人不知道!收藏这些自媒体实用网站,让你月薪提高5k
  15. python基础(八):进制转换及python中的进制转换方法
  16. 宝塔面板无法安装php,宝塔面板安装php失败
  17. 超详细的Elasticsearch高性能优化实践
  18. ajax将监听器值赋值servlet,Java面试问题
  19. 创业很难,有没有人愿意分享自己一些创业的点子,想法,尽量详细一点?
  20. gerrit git 邮箱不匹配的问题

热门文章

  1. [DSP 日常记录] #1 冯诺依曼结构、哈佛结构与改进型哈佛结构
  2. PointGet的一生
  3. 【Python】什么是递归函数?
  4. menu.ctrl.php,对pyqt5之menu和action的使用详解
  5. java ios 3des_3DES在Android、Ios 和Java 平台的加密解密
  6. Java虚拟机这一块 —— JVM 调优和深入了解性能优化
  7. 百度地图绘制工具类 DrawingManager.js 源码
  8. Linux常用指令学习(篇一):文件处理指令
  9. 【点宽专栏】模型投资的风险和矛盾
  10. 怎么找网图本人_怎么通过照片找人-请问如何用相片在网络查找个人资料就是利用相 – 手机爱问...