Linux: 如何根据进程名字查找进程号?——ps命令的用法
一、前言
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 format | format通俗来说就是列名,可以输出多个列,中间用逗号隔开 |
(4)输出修饰符
选项名 | 作用 |
---|---|
–headers | 重复header lines,每一个浏览页都显示一个header |
–sort spec | spec的格式如[+|-]key[,[+|-]key[,…]].,代表排序的key,比如:ps -ef --sort=uid,-ppid,+pid, 代表先根据uid排序,然后ppid降序,pid升序 |
个人觉得–headers比较有用
上面只是参数选项的一部分,更详细的请在linux终端输入man ps查看官方文档。
三、参考资料
【1】ps指令文档
更多推荐
所有评论(0)