
Linux ps命令查看进程
在Linux 程序的运行实例称为进程。有时在Linux工作时,您可能需要找出当前正在运行的进程
在Linux 程序的运行实例称为进程。有时在Linux工作时,您可能需要找出当前正在运行的进程。
您可以使用许多命令来查找正在运行进程的信息,ps与top也是最常用的命令。
在教程中,我们将讨论如何在Linux使用ps命令查看正在运行的进程以及查看进程的详细信息。
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 myfreaxUID 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 #BSDPS命令与管道
ps可以通过命令与其它命令组合使用。如果你分页显示ps命令的信息,则可以通过管道符|,传递给less命令,以达到分页的查看目的。
ps命令的输出也可以通过管道|传递给grep进行过滤。比如仅展示root用户的进程。
ps -ef | less
ps -ef | grep root结论
对Linux问题进行故障排除时,ps命令是最常用的命令之一。它有很多选项,通常大多数用户都使用ps aux或ps -ef来收集正在运行的进程的信息。
个人建议使用BSD风格,简单且已读。要查看所有可用ps选项的信息,请在终端中输入man ps。如果您有任何问题或反馈,请随时发表评论。













