一、前言

1.根据进程名字查找进程号,可使用ps命令。

比如,我们想到进程nginx的进程号(pid), 可使用下面的命令:

ps -C nginx -o pid=

-C 是command的意思,一般进程名包含在启动该进程的命令(command)中,所以我们可以通过选择command name来实现我们的目的。

-o是一个格式选项,输出用户想输出的列及其列名,这里pid=代表输出pid这一列,列名为空,当然你也可以定义其他列名。

另外,你可以通过管道命令和grep命令实现,如:

ps -ef |grep nginx
2.同样可使用进程号查找进程名

比如我们想要查找进程号为1166的进程名,可使用以下命令:

ps -p 1166 -o comm=

-p代表pid,-o也是输出格式选项, 如果不知道comm这个选项,可以不跟-o,整行输出

另外一个参数-q跟-p作用完全一样,意思是quick mode,可使用-q代替-p

更详细的关于ps的用法请看下面:

二、ps命令的详细用法

1. ps 命令的语法

ps [options]

2. 常见的ps命令

相对来说,ps命令是一个用法比较多的命令。这是因为,ps命令有多种不同风格的参数选项,每种风格中有部分的参数选项是作用相同的,造成了其看起来十分繁复。比如,在ubuntu16.04中,就有三种风格:

1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.

除了支持不同风格的选项外,在同种风格的ps选项,也有很多是重复的。比如-A 和-e是相同的,都代表选择所有的进程。

虽然参数很多,但入门级常用的就下面两种。

ps -ef、ps aux——查看所有进程

a. 使用标准unix语法

ps -ef          // e代表every,f代表full-format,输出所有信息列
ps -eF			// F比f更全,多了SZ,RSS,PSR三列

b. 使用BSD语法

ps aux

有的人也用ps -aux, -a代表all, -u代表user, x代表user的名字x,代表输出系统中user x的所有进程。当系统中没有user x的时候,ps -aux等价于ps aux,即输出所有的进程。而事实上ps aux属于BSD风格,a代表all,x代表终端启动的,u代表用用户能看懂的方式展示。

所以我们常用就ps -ef,和ps -aux两种,推荐使用ps -ef

ps命令加上管道命令和grep命令,我们可以获取大部分的进程信息。

3. ps 参数选项分类

(1)简单的进程选择

选项名作用
-A, -e选择所有进程
-a选择终端启动的进程
r只选择运行中的进程

(2)通过列表选择进程

选项名作用
-C cmdlist如-C nginx,python 。cmdlist可以是一个,也可以是多个进程名,中间用逗号分隔
-G grplist通过group ID或者group name选择进程
p pidlist; -p pidlist; --pid pidlist三种不同风格,作用一样,根据进程号选择进程
U userlist; -U userlist; --User userlist;-u userlist三种不同风格,作用一样,根据用户ID或用户名选择进程,其中-u userlist只选择有效的用户名

(3)输出格式控制

选项名作用
-f代表full format
-o formatformat通俗来说就是列名,可以输出多个列,中间用逗号隔开

(4)输出修饰符

选项名作用
–headers重复header lines,每一个浏览页都显示一个header
–sort specspec的格式如[+|-]key[,[+|-]key[,…]].,代表排序的key,比如:ps -ef --sort=uid,-ppid,+pid, 代表先根据uid排序,然后ppid降序,pid升序

个人觉得–headers比较有用

上面只是参数选项的一部分,更详细的请在linux终端输入man ps查看官方文档。

三、参考资料

【1】ps指令文档

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐