最全的Linux进程监视命令ps的30个常用例子

jk 1年前 ⋅ 1497 阅读

源于:今日头条(查看原文)

ps命令是Unix/Linux内建的实用程序,用它能查看当前系统正在运行的进程的相关信息。

ps命令从/proc文件系统中的虚拟文件中读取相关信息,它是系统管理中最重要的功能,特别是在进程监控方面,它能帮助你了解Linux系统当前正发生了什么。

ps命令具有操作其输出的众多参数,但在我们的日常管理中只会用到其中很小的部分。

在这篇教程中,我们将用30个常用例子来列举ps命令对Linux进程的监视。

一、列出当前Shell中的所有进程

1. 如果您运行ps命令没有带任何参数,它将显示当前shell的所有进程。

$ ps

最全的Linux进程监视命令ps的30个常用例子

List Current Running Processes

二、以不同的风格显示所有进程

ps命令带有2种不一样的风格,分别是BSD和UNIX。新用户经常会混淆和错误地解释这两种风格。所以要弄清楚他们,继续操作之前这里是一些基本的信息。

注意:"ps aux"和"ps -aux"不相同。例如"-u"用来显示该用户的进程。但是"u"则是显示详细的信息。

2. UNIX/LINUX的风格:在linux风格的语法选项前面有一个破折号“-”如下:

$ ps -A

OR

$ ps -e

最全的Linux进程监视命令ps的30个常用例子

List Processes in Standard Format

3. BSD风格:在BSD风格的语法选项前不带连字符,如下:

$ ps au

OR

$ ps axu

最全的Linux进程监视命令ps的30个常用例子

List Processes in BSD Format

4. 要以全格式列表显示所有进程,请添加-f或-F标志。

$ ps -ef

OR

$ ps -eF

最全的Linux进程监视命令ps的30个常用例子

List Processes in Long List Format

三、显示用户运行进程

5. 你可以查询你拥有的所有进程(运行ps命令的权限,在本例中为root),输入:

$ ps -x

6. 使用-U参数显示指定用户名(RUID)或用户ID的进程:

$ ps -fU servicelabs

OR

$ ps -fu 1001

最全的Linux进程监视命令ps的30个常用例子

List User Processes by ID

7. 使用-u参数显示指定用户名(EUID)或用户ID的进程:

$ ps -fu tecmint

OR

$ ps -fu 1000

四、显示作为根用户运行的所有进程

8. 以下命令允许您以用户格式查看以root用户权限(实际和有效ID)运行的每个进程:

$ ps -U root -u root

 

Display Root User Running Processes

五、显示组进程

9. 如果要列出某个组拥有的所有进程(实际组ID(RGID)或名称)),请输入:

$ ps -fG www-data

OR

$ ps -fG 33

最全的Linux进程监视命令ps的30个常用例子

Display Group Processes

10. 如果要列出有效组名称(或会话)所拥有的所有进程,请输入:

$ ps -fg www-data

六、通过PID和PPID显示进程

11. 你可以通过进程ID来显示所属的进程,如下显示进程ID为1178的进程:

$ ps -fp 1239

最全的Linux进程监视命令ps的30个常用例子

List Processes by PID

12. 以父进程ID来显示其下所有的进程,如显示父进程为1154的所有进程:

$ ps -f --ppid 1244

最全的Linux进程监视命令ps的30个常用例子

List Process by PPID

13. 显示指定PID的多个进程:

$ ps -fp 1204,1239,1263

最全的Linux进程监视命令ps的30个常用例子

List Processes by PIDs

七、通过所属TTY来显示进程

14. 要按tty显示所属进程,可使用-t参数,如下所示。

$ ps -t pst/0

$ ps -t pst/1

$ ps -ft tty1

最全的Linux进程监视命令ps的30个常用例子

List Processes by TTY

八、树形显示进程

15. 以进程树显示系统中的进程如何相互链接。

$ ps -e --forest

最全的Linux进程监视命令ps的30个常用例子

List Process Tree

16. 以进程树显示指定的进程

$ ps -f --forest -C sshd

OR

$ ps -ef --forest | grep -v grep | grep sshd

最全的Linux进程监视命令ps的30个常用例子

List Tree View of Process

九、根据线程来显示进程

17. 要显示一个进程的所有线程,请使用-H参数,这将显示LWP(轻量级进程)以及NLWP(轻量级进程数)列。

$ ps -fL -C nginx

最全的Linux进程监视命令ps的30个常用例子

List Process Threads

十、指定自定义输出格式

使用-o或-format选项,ps允许您构建用户定义的输出格式,如下所示:

18. 要列出所有格式说明符,请包括L标志。

$ ps L

19. 以下命令允许您查看进程的PID,PPID,用户名和命令:

$ ps -eo pid,ppid,user,cmd

最全的Linux进程监视命令ps的30个常用例子

List Processes with Names

20. 下面是一个自定义输出格式的示例,显示文件系统组,ni值,开始时间和进程的时间:

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

最全的Linux进程监视命令ps的30个常用例子

List Process ID Information

21. 使用其PID查找进程名称:

$ ps -p 1244 -o comm=

最全的Linux进程监视命令ps的30个常用例子

Find Process using PID

十一、显示父进程和子进程

22. 要以其名称选择特定进程,请使用-C参数,这也将显示其所有子进程。

$ ps -C sshd

最全的Linux进程监视命令ps的30个常用例子

Find Parent Child Process

23. 查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用,如下列:

$ ps -C nginx -o pid=

最全的Linux进程监视命令ps的30个常用例子

Find All Process PIDs

24. 检查一个进程的执行时间。

$ ps -eo comm,etime,user | grep nginx

以下输出显示nginx服务已运行45分37秒:

最全的Linux进程监视命令ps的30个常用例子

Find Process Uptime

十二、Linux系统性能和故障排除

如果你的系统不能正常工作,例如,如果速度异常慢,你可以执行以下命令来排除系统故障:

26. 查找占用最多内存和CPU的进程

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

OR

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

最全的Linux进程监视命令ps的30个常用例子

Find Top Running Processes

27. 终结耗费高CPU时间或者没有反应的进程:

首先,找到无响应的进程或进程的PID。

$ ps -A | grep -i stress

然后用kill命令立刻终结指定的PID:

$ kill -9 1244 1246 1247 1248 1249

最全的Linux进程监视命令ps的30个常用例子

Find and Kill a Process

十三、显示安全信息

28. 显示安全信息:

$ ps -eM

OR

$ ps --context

最全的Linux进程监视命令ps的30个常用例子

Find SELinux Context

29. 你也可以使用以下命令以用户定义的格式显示安全信息。

$ ps -eo euser,ruser,suser,fuser,f,comm,label

最全的Linux进程监视命令ps的30个常用例子

List SELinux Context by Users

十四、使用Watch应用程序对进程实时监控

30. 最后,因为ps显示的是静态的信息,你可以使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命令显示每秒钟的监视:

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

最全的Linux进程监视命令ps的30个常用例子

Real Time Process Monitoring


全部评论: 0

    我有话说: