目录
查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果想不断更新查看的这个状态,可以使用top命令。
UNIX风格:选项可以组合在一起,并且选项前必须有“-”连字符
BSD风格:选项可以组合在一起,但是选项前不能有“-”连字符
GNU风格:长选项,选项前有两个“-”连字符
【运行】:正在运行或在运行队列中等待
【中断】:休眠中, 受阻, 在等待某个条件的形成或接受到信号
【不可中断】:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
【僵死】:进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放
【停止】:进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
- a 显示所有进程
-
- -a 显示同一终端下的所有程序
-
- -A 显示所有进程
-
- c 显示进程的真实名称
-
- -N 反向选择
-
- -e 等于“-A”
-
- e 显示环境变量
-
- f 显示程序间的关系
-
- -H 显示树状结构
-
- r 显示当前终端的进程
-
- T 显示当前终端的所有程序
-
- u 指定用户的所有进程
-
- -au 显示较详细的资讯
-
- -aux 显示所有包含其他使用者的行程
-
- -C<命令> 列出指定命令的状况
-
- –lines<行数> 每页显示的行数
-
- –width<字符数> 每页显示的字符数
-
- –help 显示帮助信息
-
- –version 显示版本显示
这是一个基本的 ps 使用。在控制台中执行这个命令并查看结果。
结果默认会显示4列信息:
- PID: 运行着的命令(CMD)的进程编号
-
- TTY: 命令所运行的位置(终端)
-
- TIME: 运行着的该命令所占用的CPU处理时间
-
- CMD: 该进程所运行的命令
ps -ef查询结果(显示所有进程信息,连同命令行):
- # ps -ef
-
- UID PID PPID C STIME TTY TIME CMD
-
- root 1 0 0 8月16 ? 02:28:29 /sbin/init
- root 2 0 0 8月16 ? 00:00:12 [kthreadd]
- root 3 2 0 8月16 ? 00:00:00 [rcu_gp]
- root 4 2 0 8月16 ? 00:00:00 [rcu_par_gp]
- root 5 2 0 8月16 ? 00:00:00 [slub_flushwq]
- root 6 2 0 8月16 ? 00:00:00 [netns]
- root 8 2 0 8月16 ? 00:00:00 [kworker/0:0H-kblockd]
- root 10 2 0 8月16 ? 00:00:00 [mm_percpu_wq]
- root 11 2 0 8月16 ? 00:00:00 [rcu_tasks_rude_]
- root 12 2 0 8月16 ? 00:00:00 [rcu_tasks_trace]
列字段说明
- UID:用户ID,即进程的拥有者
- PID:进程ID
- PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
- C:cpu的占用率,形式是百分数(%)
- STIME:进程开始启动时间
- TTY:终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
- TIME:进程的执行时间
- CMD:该进程的名称或对应的路径
- F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
-
- 0 S 1000 1928831 1928830 0 80 0 - 2094 - pts/1 00:00:00 bash
-
- 0 R 1000 2026688 1928831 0 80 0 - 2476 - pts/1 00:00:00 ps
列字段说明
- F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
-
- S 代表这个程序的状态 (STAT)
-
- UID 程序被该 UID 所拥有
-
- PID 就是这个程序的 ID
-
- PPID 则是其上级父程序的ID
-
- C CPU 使用的资源百分比
-
- PRI 是 Priority (优先执行序) 的缩写
-
- NI 这个是 Nice 值
-
- ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-“
-
- SZ 使用掉的内存大小
-
- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
-
- TTY 登入者的终端机位置
-
- TIME 使用掉的 CPU 时间
-
- CMD 所下达的指令
-
- 在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID ,使用 ps -l 的时候,只有三个 PID。
ps -aux结果
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
-
- root 1 0.3 0.0 167516 10264 ? Ss 8月16 148:38 /sbin/init
- root 2 0.0 0.0 0 0 ? S 8月16 0:12 [kthreadd]
- root 3 0.0 0.0 0 0 ? I< 8月16 0:00 [rcu_gp]
- root 4 0.0 0.0 0 0 ? I< 8月16 0:00 [rcu_par_gp]
- root 5 0.0 0.0 0 0 ? I< 8月16 0:00 [slub_flushwq]
- root 6 0.0 0.0 0 0 ? I< 8月16 0:00 [netns]
- root 8 0.0 0.0 0 0 ? I< 8月16 0:00 [kworker/0:0H-kblockd]
- root 10 0.0 0.0 0 0 ? I< 8月16 0:00 [mm_percpu_wq]
- root 11 0.0 0.0 0 0 ? S 8月16 0:00 [rcu_tasks_rude_]
- root 12 0.0 0.0 0 0 ? S 8月16 0:00 [rcu_tasks_trace]
列字段说明:
- USER:该 process 属于哪个使用者账号的
-
- PID :该 process 的号码
-
- %CPU:该 process 使用掉的 CPU 资源百分比
-
- %MEM:该 process 所占用的物理内存百分比
-
- VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
-
- RSS :该 process 占用的固定的内存量 (Kbytes)
-
- TTY :该 process 是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
-
- STAT:该程序目前的状态,主要的状态有
-
- R :该程序目前正在运作,或者是可被运作
-
- S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
-
- T :该程序目前正在侦测或者是停止了
-
- Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
-
- START:该 process 被触发启动的时间
-
- TIME :该 process 实际使用 CPU 运作的时间
-
- COMMAND:该程序的实际指令
- # ps -eo pid,ppid,etime,lstart,cmd | grep docker
-
- 1116981 3777001 06:07:42 Wed Sep 13 08:46:33 2023 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8081 -container-ip 172.17.0.3 -container-port 8080
-
- 1117010 3777001 06:07:42 Wed Sep 13 08:46:33 2023 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8081 -container-ip 172.17.0.3 -container-port 8080
-
- 2061086 3777001 29:40 Wed Sep 13 14:24:35 2023 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
-
- 2061115 3777001 29:40 Wed Sep 13 14:24:35 2023 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
ppid:父进程id
lstart:进程启动时间
etime:启动时长