Linux中ps命令使用指南

2023-12-14 11:47:09

1 前言

本文将详细介绍在Linux操作系统中广泛使用的ps命令。ps命令代表"process status",是用于查看当前系统运行进程信息的重要工具。通过讲解什么是ps命令及其作用,并深入说明如何使用不同选项参数和结合其他命令,本文旨在帮助读者全面了解并掌握ps命令,使其能够有效地监控和管理系统中正在运行的进程。

2 ps命令的含义和作用

当探索操作系统的进程管理时,ps 命令是 Linux 中最有用且常用的工具之一。作为 process status 的缩写,它提供了深入了解正在系统中运行的进程的能力。通过查看诸如进程 ID(PID)、CPU 使用情况、内存占用、运行时间等详细信息,ps 命令让用户能够全面了解系统中正在运行的活动。

3 ps命令的基本使用

ps 命令的基本语法如下:

ps [选项参数]

可以通过添加不同的选项来获取不同类型的进程信息。

直接输入 ps,显示当前进程:

ps

在这里插入图片描述

输出结果包含 4 列信息:PID、TTY、TIME、CMD

  • PID:(Process ID)唯一的进程 ID
  • TTY:(Teletypewriter)它指的是终端类型或终端设备,用于用户与计算机进行交互的输入输出设备,例如终端窗口或控制台。
  • TIME:进程运行过程中占用 CPU 的总时间(以分钟和秒为单位),简单理解就是 CPU 运行这个进程消耗的时间。
  • CMD:启动进程的命令的名称

有时候当我们执行 ps 命令时,TIME 显示为 00:00:00。这意味着该进程尚未使用 CPU ,所以没有 CPU 执行的总时间。

对于上面的 bash,就是这种情况,因为 bash 只是其他需要借助 bash 运行的进程的父进程,所以它本身并没有使用 CPU,也就没有 CPU 执行时间了。

4 常用选项参数

以下是一些常用的 ps 命令选项参数

  • -C cmdlist:按命令名称选择。选择可执行文件名称在 cmdlist 中的进程。
  • -G grplist:按实际组 ID(RGID)或名称选择。选择实际组名称或 ID 在 grplist 列表中的进程。
  • -g grplist:按会话或有效组名称选择。按会话选择是多个标准中指定的,但按有效组选择是其他几个操作系统使用的逻辑行为。当列表完全为数字时(因为会话是数字),此 ps 将按会话选择。仅当指定了一些组名称时,组 ID 数字才会生效。请参阅 -s--group 选项。
  • --Group grplist:按实际组 ID(RGID)或名称选择。等同于 -G
  • --group grplist:按有效组 ID(EGID)或名称选择。选择有效组名称或 ID 在 grplist 中的进程。有效组 ID 描述进程使用其文件访问权限的组(参见 getegid(2))。-g 选项通常是 --group 的替代方式。
  • p pidlist:按进程 ID 选择。与 -p--pid 相同。
  • -p pidlist:按 PID 选择。选择进程 ID 号出现在 pidlist 中的进程。与 p--pid 相同。
  • --pid pidlist:按进程 ID 选择。与 -pp 相同。
  • --ppid pidlist:按父进程 ID 选择。选择具有在 pidlist 中列出的父进程 ID 的进程。即选择作为这些进程的子进程的进程。
  • q pidlist:按进程 ID 选择(快速模式)。与 -q--quick-pid 相同。
  • -q pidlist:按 PID 选择(快速模式)。选择进程 ID 号出现在 pidlist 中的进程。使用此选项,ps 仅为 pidlist 中列出的 PID 读取必要的信息,并且不应用其他过滤规则。PID 的顺序未排序并保留不变。在此模式下,不允许使用其他选择选项、排序和树型列表。与 q--quick-pid 相同。
  • --quick-pid pidlist:按进程 ID 选择(快速模式)。与 -qq 相同。
  • -s sesslist:按会话 ID 选择。选择会话 ID 在 sesslist 中指定的进程。
  • --sid sesslist:按会话 ID 选择。等同于 -s
  • t ttylist:按 tty 选择。几乎与 -t--tty 相同,但还可以与空的 ttylist 一起使用,以表示与 ps 关联的终端。使用 T 选项被认为比使用带有空 ttylist 的 t 更清晰。
  • -t ttylist:按 tty 选择。选择与 ttylist 中给定的终端相关的进程。终端(ttys,或用于文本输出的屏幕)可以用几种形式指定:/dev/ttyS1ttyS1S1。可以使用普通的 “-” 来选择未连接到任何终端的进程。
  • --tty ttylist:按终端选择。等同于 -tt
  • U userlist:按有效用户 ID(EUID)或名称选择。选择有效用户名称或 ID 在 userlist 中的进程。有效用户 ID 描述进程使用其文件访问权限的用户(参见 geteuid(2))。与 -u--user 相同。
  • -U userlist:按实际用户 ID(RUID)或名称选择。选择实际用户名称或 ID 在 userlist 列表中的进程。实际用户 ID 标识创建进程的用户,参见 getuid(2)
  • -u userlist:按有效用户 ID(EUID)或名称选择。选择有效用户名称或 ID 在 userlist 中的进程。有效用户 ID 描述进程使用其文件访问权限的用户(参见 geteuid(2))。与 U--user 相同。
  • --User userlist:按实际用户 ID(RUID)或名称选择。等同于 -U
  • --user userlist:按有效用户 ID(EUID)或名称选择。等同于 -uU

5 一些常用情景

以下是几个示例,展示了不同的 ps 命令用法及其功能:

5.1 查看系统中的所有进程(标准语法)

ps -e
ps -ef
ps -eF
ps -ely

这些命令会显示系统中的所有进程,提供不同的显示格式和详细程度。

5.2 使用 BSD 语法查看系统中的所有进程

ps ax
ps axu

这些命令采用 BSD 风格的语法来显示系统中的所有进程,提供了另一种查看方式。

5.3 打印进程树

ps -ejH
ps axjf

这些命令将打印出进程树,展示进程之间的层级关系。

5.4 获取线程信息

ps -eLf
ps axms

这些命令提供有关线程的信息,展示系统中各个线程的相关数据。

5.5 获取安全信息

ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

这些命令提供了安全相关的信息,如进程的用户、标签、安全上下文等。

这些示例展示了 ps 命令不同选项的用法,允许用户根据需求以不同的方式查看并了解系统中运行的进程及相关信息。

5.6 查看以 root 用户身份(实际和有效 ID)运行的所有进程,以用户定义格式显示

ps -U root -u root u

这个命令将显示所有以 root 用户身份(实际和有效 ID)运行的进程,并使用用户定义的格式输出相关信息。

5.7 查看以用户自定义格式显示的所有进程

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan

这些命令展示了以用户定义格式显示进程信息的方式。通过指定要显示的字段,用户可以根据自己的需求定制输出格式。

5.8 只打印 syslogd 进程的进程 ID

ps -C syslogd -o pid=

此命令将仅显示 syslogd 进程的进程 ID,过滤出与 syslogd 进程相关的信息。

这些示例展示了在使用 ps 命令时,如何根据不同需求指定特定的选项和格式,以获取所需的进程信息。

6 ps 与其他命令一起使用

ps 命令可以与其他命令通过管道符 | 结合使用,这样可以对 ps 命令的输出结果进行进一步的筛选和处理。例如,结合使用 psgrep 命令,可以通过以下方式过滤出属于 root 用户的进程:

ps -ef | grep root

这个命令的含义是,首先执行 ps -ef 获取系统中所有进程的详细信息,然后将这些信息通过管道 | 传递给 grep 命令。grep root 表示使用 grep 命令匹配包含关键词 root 的行(即属于 root 用户的进程信息),并将这些匹配到的行显示在终端上。

7 总结

了解 ps 命令的使用方式可以帮助系统管理员和用户监视系统资源的使用情况,诊断问题以及优化系统性能。它是管理和了解 Linux 系统中进程状态的重要工具之一。

通过深入了解 ps 命令的基本语法和常用选项,以及它与其他命令结合使用的方法,用户可以更好地掌握如何利用这个强大的工具来管理系统进程,并更全面地了解系统的运行状态。

文章来源:https://blog.csdn.net/cooldream2009/article/details/134990775
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。