简介

ps命令经常用,但是从来没有系统学习。
而且,在不同的Linux发行版系统中,ps命令的使用也是有略微差别的。

详解

使用ps --help命令查看帮助文档

┌──(root㉿kali)-[~]
└─# ps --help     

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).
                                                                                                                                                                                                                                           
┌──(root㉿kali)-[~]
└─# ps --help simple

Usage:
 ps [options]

Basic options:
 -A, -e               all processes
 -a                   all with tty, except session leaders
  a                   all with tty, including other users
 -d                   all except session leaders
 -N, --deselect       negate selection
  r                   only running processes
  T                   all processes on this terminal
  x                   processes without controlling ttys

For more details see ps(1).
                                                                                                                                                                                                                                           
┌──(root㉿kali)-[~]
└─# ps --help s     

Usage:
 ps [options]

Basic options:
 -A, -e               all processes
 -a                   all with tty, except session leaders
  a                   all with tty, including other users
 -d                   all except session leaders
 -N, --deselect       negate selection
  r                   only running processes
  T                   all processes on this terminal
  x                   processes without controlling ttys

For more details see ps(1).

ps命令的模块较多,要使用ps --help 模块名,如上述的ps --help simple(可简称s)

常用参数

-a显示所有进程,包括其他用户的进程。
-u显示指定用户的进程信息。
-x显示所有进程,包括没有控制终端的进程。
-e显示所有进程,等同于ps -A。
-f显示进程的详细信息,包括进程的UID、PPID、CPU占用率等。
-l显示进程的长格式信息,包括进程的UID、PPID、CPU占用率、内存占用率等。
-p显示指定进程号的进程信息。
除上述简单参数,还有一些高级参数
  1. --sort

用于指定进程信息的排序方式。可以使用以下参数值:

%cpu按照CPU占用率排序。
%mem按照内存占用率排序。
pid按照进程号排序。
ppid按照父进程号排序。
start_time按照进程启动时间排序。
time按照进程运行时间排序。

例如,要按照CPU占用率从高到低排序显示所有进程的信息,可以使用命令:
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu
该命令会显示所有进程的PID、PPID、命令和CPU占用率,并按照CPU占用率从高到低排序。

  1. --forest

用于显示进程树,包括进程的父子关系。还有一个与之类似的命令----pstree,也是查看进程树。
例如,要显示所有进程的进程树,可以使用命令:
ps -ef --forest
该命令会显示所有进程的进程树,包括进程的父子关系。

  1. --headers

用于显示进程信息的表头。
例如,要显示所有进程的PID、PPID、命令和CPU占用率,并显示表头,可以使用命令:
ps -eo pid,ppid,cmd,%cpu --headers
该命令会显示所有进程的PID、PPID、命令和CPU占用率,并显示表头。

  1. no-headers

用于不显示进程信息的表头。
例如,要显示所有进程的PID、PPID、命令和CPU占用率,并不显示表头,可以使用命令:
ps -eo pid,ppid,cmd,%cpu --no-headers
该命令会显示所有进程的PID、PPID、命令和CPU占用率,并不显示表头。

  1. --user

用于指定要查看的用户的进程信息。
例如,要查看用户root的进程信息,可以使用命令:
ps -u root
该命令会显示用户root的进程信息。

使用技巧

  1. 使用grep命令过滤进程信息

有时候,我们只需要查看某个进程或者某个用户的进程信息,可以使用grep命令来过滤进程信息。例如,要查看所有以nginx开头的进程信息,可以使用命令:

ps -ef | grep nginx

该命令会先使用ps -ef命令显示所有进程的详细信息,然后使用grep命令过滤出所有以nginx开头的进程信息。

  1. 使用watch命令实时查看进程信息

有时候,我们需要实时查看进程的信息,可以使用watch命令实现。例如,要实时查看所有进程的CPU占用率,可以使用命令:

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

该命令会每秒钟执行一次ps命令,显示所有进程的PID、PPID、命令和CPU占用率,并按照CPU占用率从高到低排序,然后只显示前10行。

  1. 使用top命令查看进程信息

top命令是一个非常强大的进程查看工具,可以实时查看进程的信息。可以使用top命令来查看进程的CPU占用率、内存占用率等信息。例如,要查看所有进程的CPU占用率,可以使用命令:

top

该命令会实时显示所有进程的CPU占用率、内存占用率等信息,并按照CPU占用率从高到低排序。

  1. 使用pstree命令查看进程树

pstree命令可以显示进程树,包括进程的父子关系。例如,要查看所有进程的进程树,可以使用命令:

pstree

该命令会显示所有进程的进程树,包括进程的父子关系。

  1. 使用pidof命令查找进程号

pidof命令可以根据进程名查找进程号。例如,要查找nginx进程的进程号,可以使用命令:

pidof nginx

该命令会显示nginx进程的进程号。

结语

学无止境啊!!!