首页 > 行业资讯 > 正文

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

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

在教程中,我们将讨论如何在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

四列分别标记复制PID,复制TTY,复制TIME和复制CMD。复制PID是进程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个的列的信息复制USER,复制PID,复制%CPU,复制%MEM,复制VSZ,复制RSS,复制STAT,复制START,复制TTY,复制TIME和复制CMD。

我们已经解释复制PID,复制TTY,复制TIME和复制CMD列。这是其他标签列的说明,复制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列的信息包括复制UID,复制PID,复制PPID,复制C,复制STIME,复制TIME和复制CMD。

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

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

要仅查看以指定用户运行的进程,请运行命令复制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命令将会仅展示你指定的列名。

例如要仅打印复制PID,复制COMMAND的信息。您将运行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 aux或复制ps -ef来收集正在运行的进程的信息。

个人建议使用BSD风格,简单且已读。要查看所有可用复制ps选项的信息,请在终端中输入复制man ps。

猜你喜欢