6

Linux ps命令查看进程

 1 year ago
source link: https://www.myfreax.com/ps-command-in-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ps

Linux ps命令查看进程

在Linux 程序的运行实例称为进程。有时在Linux工作时,您可能需要找出当前正在运行的进程

Updated At 27 Nov 2022 5 min read
By myfreax
Linux ps命令查看进程

Linux ps命令查看进程

在Linux 程序的运行实例称为进程。有时在Linux工作时,您可能需要找出当前正在运行的进程。

您可以使用许多命令来查找正在运行进程的信息,pstop也是最常用的命令。

在教程中,我们将讨论如何在Linux使用ps命令查看正在运行的进程以及查看进程的详细信息。

ps命令的语法是ps [OPTIONS]。出于历史和兼容性的原因,ps命令接受几种不同类型的选项。

UNIX风格选项,这种通常在ps命令后跟一个破折号。BSD风格选项,不带破折号。GNU长选项,后跟两个破折号。

你可以混合使用多种选项,但在某些情况下可能会出现冲突,因此最好坚持使用一种类型的选项。BSD和UNIX风格是最常用的。

不带任何选项运行ps命令,是最简单的形式。ps命令将打印四列信息,显示当前shell程序中正在运行的两个进程。shell程序本身以及调用ps命令时运行的进程。

ps
  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps

四列分别标记PIDTTYTIMECMDPID是进程ID。

在大多数情况下,运行ps命令时,用户寻找的最重要的信息是进程PID。了解PID可以使您终止故障进程。

TTY进程控制终端的名称。TIME进程使用CPU的时间,以分钟和秒为单位。CMD创建该进程的命令名称。

上面的输出不是很有用,因为它包含的信息不多。当使用其他选项运行ps命令时,ps命令的真正功能才能体现出来。

ps命令接受大量选项,这些选项可用于显示指定的一组进程以及进程的信息,但是在日常使用中只需要少数几个选项。ps命令最常与以下选项组合使用。

PS命令BSD风格

如果以BSD的风格运行PS命令是不带破折号-的,例如命令ps aux,将使用BSD风格选项来查看进程信息。

a选项将会展示所有用户的进程,但不包括关联终端的进程以及进程的父进程。u代表一种面向用户的格式,提供进程的详细信息。

x选项让ps没有控制终端的进程。这包括在启动时在后台运行的进程,例如服务。

ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.8  77616  8604 ?        Ss   19:47   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    19:47   0:00 [kthreadd]
...

ps aux命令将显示11个的列的信息USERPID%CPU%MEMVSZRSSSTATSTARTTTYTIMECMD

我们已经解释PIDTTYTIMECMD列。这是其他标签列的说明,USER运行进程的用户。

%CPU进程的cpu利用率。%MEM进程的驻留空间大小占计算机物理内存的百分比。

VSZ进程的虚拟内存大小,以KiB作为单位。RSS进程正在使用的物理内存的大小。

STAT进程状态代码,可以是Z僵尸进程,S正在休眠进程,R正在运行进程等。START命令开始的时间。

要打印进程树,请添加f选项。这将指示ps命令显示父进程到子进程的树视图。例如命令ps auxf将会打印进程树视图。

ps命令还允许您对输出进行排序。例如,要根据内存使用情况对输出进行排序,则可以运行命令ps aux --sort=-%mem

ps auxf
ps aux --sort=-%mem

PS命令UNIX风格

ps -ef命令是Unix风格最常使用的命令,e选项指示ps列出所有进程。f列出进程的详细信息。

ps -ef命令将显示8列的信息包括UIDPIDPPIDCSTIMETIMECMD

UID与BSD风格的PS命令的USER列相同,表示运行进程的用户。PPID父进程的ID。

C与相同%CPU列相同,表示进程的cpu利用率。STIMESTART列相同,表示命令启动的时间。

要仅查看以指定用户运行的进程,请运行命令ps -f -U myfreax -u myfreax,其中myfreax用户名。

ps -ef
ps -f -U myfreax -u myfreax
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:47 ?        00:00:01 /sbin/init
root         2     0  0 19:47 ?        00:00:00 [kthreadd]
...

打印指定列

如果你需要太多列的进程信息,可以使用o选项,后跟要打印的列名,ps命令将会仅展示你指定的列名。

例如要仅打印PIDCOMMAND的信息。您将运行unix风格的命令ps -efo pid,comm。或者BSD风格的命令ps auxo pid,comm

ps -efo pid,comm #UNIX
ps auxo pid,comm #BSD

PS命令与管道

ps可以通过命令与其它命令组合使用。如果你分页显示ps命令的信息,则可以通过管道符|,传递给less命令,以达到分页的查看目的。

ps命令的输出也可以通过管道|传递给grep进行过滤。比如仅展示root用户的进程。

ps -ef | less
ps -ef | grep root

对Linux问题进行故障排除时,ps命令是最常用的命令之一。它有很多选项,通常大多数用户都使用ps auxps -ef来收集正在运行的进程的信息。

个人建议使用BSD风格,简单且已读。要查看所有可用ps选项的信息,请在终端中输入man ps。如果您有任何问题或反馈,请随时发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK