前言
ps命令——查看静态的进程状态(Processes Statistics)
目录
一、描述
二、命令
三、示例
四、总结
五、思维导图
一、描述
1、作用
- 查看静态的进程状态(Processes Statistics)
ps命令是linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照。
2、进程状态
- D:无法中断的休眠状态(通常为IO进程)
- R:正在运行以及可运行状态(在运行队列中)
- S:可以中断的休眠状态(等待某一时间的完成)
- T:暂停执行
- t:在跟踪期间被调试器停止
- W:没有足够的记忆体分页可分配
- X:已死亡
- Z:不存在但暂时无法消除
对于BSD格式,当使用stat关键字时,可能会显示其他字符:
- <:优先级更高的进程
- N:优先级更低的进程
- L:将页面锁定到内存中(用于实时和自定义IO)
- s:是一个session的领导者
- l:是一个多线程
- +:是一个在后台运行的项目组
3、优先级——nice、priority
- 以数字形式给内核表示进程的优先级
- NI的值越高,优先级越低
- NI值越低或负,则表示优先级越高
- NI的取值范围:-20 ~ 19
- priority的值越小越早被执行
二、命令
1、语法
ps [options]
2、常用选项介绍
- [ -a ]:显示当前终端所有(all)用户的进程(包括其他用户的)
- [ u ]:使用以用户(user)为主的格式输出进程信息
- [ -u ] 用户名:显示特定用户的进程
- [ -x ]:显示当前用户没有控制终端的进程
- [ -l ]:使用长(long)格式显示进程信息
- [ -w ]:宽行显示,可以使用多个w进行加宽显示
- [ -e ]:显示系统内的所有(every)进程(包含用户进程、没有控制终端系统进程)信息
- [ -f ]:使用完整(Full)的格式显示进程信息
- [ -A ]:列出所有进程
注意:选项带" - "和不带前缀" - "是有区别的。
3、命令返回字段含义
命令返回的结果是以列表形式出现的,列表中主要字段的含义如下:
- USER:启动该进程的用户名,即进程所有者的用户名
- UID:进程所属的用户ID,在当前系统中是唯一的
- PID(Process ID):该进程在系统中的标识号(ID号)
- PPID:进程的父进程标识号
- %CPU:该进程占用的CPU使用率
- %MEM:该进程占用的物理内存和总内存的百分比
- TTY:表明该进程在哪个终端上运行(" ? "标识为未知或不需要终端)
- VSZ/VIRT:占用的虚拟内存(swap空间)的大小(单位:KB)
- RSS/RES:占用的固定内存(物理内存)的大小(单位:KB)
- SHR:进程使用的共享内存的大小(单位:KB)
- COMMAND/CMD:启动该进程的命令的名称。列中的信息用中括号(" [ ] ")括起来则说明该进程为内核线程(Kernel thread),一般以k开头
- TIME:实际使用CPU的时间
- STIME:进程的启动时间
- TIME+:进程启动后占用的总的CPU时间(CPU使用时间的累加)
- STAT/S:进程当前的状态
- START:启动该进程的时间
- PRI/PR:进程的优先级(priority)
- NI:进程的友善度(niceness)
三、示例
1、使用标准语法查看系统上的所有进程
[root@localhost ~]# ps -ejH
PID PGID SID TTY TIME CMD
2 0 0 ? 00:00:00 kthreadd
4 0 0 ? 00:00:00 kworker/0:0H
5 0 0 ? 00:00:00 kworker/u256:0
......
[root@localhost ~]# ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 4 0 0 ? -1 S< 0 0:00 _ [kworker/0:0H]
2 5 0 0 ? -1 S 0 0:00 _ [kworker/u256:0]
......
2、使用BSD格式查看所有进程
[root@localhost ~]# ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 15:02 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 15:02 ? 00:00:00 [kthreadd]
root 4 2 4 0 1 15:02 ? 00:00:00 [kworker/0:0H]
......
[root@localhost ~]# ps axms
UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
0 1 0000000000000000 - - - - ? 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize
0 - 0000000000000000 7be3c0fe28014a03 0000000000001000 00000001800004ec Ss - 0:02 -
0 2 0000000000000000 - - - - ? 0:00 [kthreadd]
......
3、打印进程树
[root@localhost ~]# ps -eo euser,ruser,suser,fuser,f,comm,label
EUSER RUSER SUSER FUSER F COMMAND LABEL
root root root root 4 systemd system_u:system_r:init_t:s0
root root root root 1 kthreadd system_u:system_r:kernel_t:s0
root root root root 1 kworker/0:0H system_u:system_r:kernel_t:s0
......
[root@localhost ~]# ps axZ
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 4 ? S< 0:00 [kworker/0:0H]
......
[root@localhost ~]# ps -eM
LABEL PID TTY TIME CMD
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:kernel_t:s0 2 ? 00:00:00 kthreadd
system_u:system_r:kernel_t:s0 4 ? 00:00:00 kworker/0:0H
4、获取关于线程的信息
[root@localhost ~]# ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 15:02 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 15:02 ? 00:00:00 [kthreadd]
root 4 2 4 0 1 15:02 ? 00:00:00 [kworker/0:0H]
......
[root@localhost ~]# ps axms
UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
0 1 0000000000000000 - - - - ? 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize
0 - 0000000000000000 7be3c0fe28014a03 0000000000001000 00000001800004ec Ss - 0:02 -
0 2 0000000000000000 - - - - ? 0:00 [kthreadd]
......
5、获取安全的信息
[root@localhost ~]# ps -eo euser,ruser,suser,fuser,f,comm,label
EUSER RUSER SUSER FUSER F COMMAND LABEL
root root root root 4 systemd system_u:system_r:init_t:s0
root root root root 1 kthreadd system_u:system_r:kernel_t:s0
root root root root 1 kworker/0:0H system_u:system_r:kernel_t:s0
......
[root@localhost ~]# ps axZ
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 4 ? S< 0:00 [kworker/0:0H]
......
[root@localhost ~]# ps -eM
LABEL PID TTY TIME CMD
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:kernel_t:s0 2 ? 00:00:00 kthreadd
system_u:system_r:kernel_t:s0 4 ? 00:00:00 kworker/0:0H
四、总结
- ps显示有关活动进程的信息
- 是Linux系统中最为常用的进程查看工具
- ps语法:ps [options]
五、思维导图