ps 常用命令
什么是ps?
- ps是process status的缩写,用于查看当前系统中运行的进程信息。它提供了关于进程的各种详细信息,如进程 PID、进程状态、CPU 使用情况、内存占用、运行时间等。
常用选项参数
-A :所有的进程均显示出来
-a :显示与终端无关的所有进程,通常是一些后台进程,不需要与用户进行交互
-u :以用户为主的进程状态,按用户名和启动时间来显示进程
-x :显示所有程序,不以终端机区分,通常与-a一起使用
-l :长格式输出
-e:(every)显示所有进程,而不仅仅是当前用户的进程
-u:(user)显示面向用户的进程的详细信息,如进程所有者、CPU 使用率、内存使用率等
-f:(full-format)以全格式的列表显示进程的信息,包括进程之间的层级关系
-p:(pid)查找具有指定进程 ID 的进程
-C:(Command)查找具有指定命令名称的进程
ps -e
- 列出所有用户下的所有进程,与ps -A命令等价,e表示every,A表示All
ps -ef
- 以全格式的列表显示所有进程的信息,包括进程之间的层级关系
UID | 用户ID,但是显示的是用户名 |
---|---|
PID | 进程id |
PPID | 父进程id |
C | 进程占用CPU百分比 |
STIME | 进程启动到现在的时间 |
TTY | 最早的终端就是电传打字机(Teletype),缩写就是 tty,进程在哪个终端运行,若与终端无关,则显示?;若为pts/0,表示由网络连接主机进程 |
TIME | 进程实际使用CPU的时间 |
CMD | 命令名称和参数 |
ps -a
-
官方解释:Select all processes except both session leaders and processes not associated with a terminal,翻译过来就是列出除session leaders外跟终端有关的进程,网上看了很多博客,这里翻译的很多都不正确,被误导了很久
-
session leader:是你登陆终端时候的那个进程,如下图所示:
-
一个更具体的描述一个 shell 中 session leader 和其他进程的关系如下图所示(图中最左方就是 session leader 进程):
ps -aux
- 以详细格式显示所有正在运行的进程,其中 x 指的是没有控制终端的进程
USER | 用户名 | |
---|---|---|
PID | 进程id | |
%CPU | 占用CPU的百分比 | |
%MEM | 占用内存百分比 | |
VSZ | 占用虚拟内存大小 | |
RSS | 占用常驻内存大小 | |
TTY | 终端的次要装置号码(minor device number of tty) | |
STAT | 进程状态,D:不可中断;R:正在运行;S:睡眠;T:停止或被追踪;Z:僵尸进程;X:死掉的进程;<:表示高优先级;n:低优先级;s:包含子进程;+:位于后台的进程组;l:内存锁页;I:空闲的进程 | |
START | 进程从启动到现在的时间 | |
TIME | 实际使用CPU的时间 | |
COMMAND | 命令和参数 |
ps -ef 和 ps -aux的区别?
- 两者的输出结果差别不大,但展示风格不同。-aux是BSD风格,-ef是System V风格。
- -aux会截断command列,而-ef不会,当结合grep时使用aux可能会找不到相应结果,尽量使用-ef