一、命令介绍
ps命令用于查看系统中进程状态。它是显示瞬间进程的状态,并不动态连续,如果想对进程进行实时监控应该用top命令。
选项 | 含义 |
---|---|
-A | 显示所有进程,等效于-e |
-a | 显示当前终端下所有进程 |
-u | 显示进程的归属用户及其它详细信息 |
-x | 显示没有控制终端的进程 |
-l | 显示长格式 |
-f | 显示完整格式 |
-L | 显示线程 |
-o | 自定义格式 |
二、输出信息含义
(1)ps aux
[root@cp ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 190852 3796 ? Ss Apr01 0:19 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Apr01 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Apr01 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Apr01 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Apr01 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S Apr01 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R Apr01 0:21 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< Apr01 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S Apr01 0:01 [watchdog/0]
root 13 0.0 0.0 0 0 ? S Apr01 0:00 [kdevtmpfs]
• USER:启动进程的用户
• PID:进程运行的ID号
• %CPU:进程占用cpu的百分比
• %MEM:进程占用内存的百分比
• VSZ:进程占用虚拟内存大小
• RSS:进程占用物理内存大小
• TTY:进程在那个终端运行
- tty1 - tty7代表本地控制台终端。其中tty1~tty6是本地字符界面终端,tty7是图形终端。
- pts/0~pts/225代表虚拟终端,一般是远程连接终端
- ?表示是系统运行的
• STAT:进程状态
- R:运行状态
- S:睡眠状态
- D:不可中断状态
- T:停止状态
- Z:僵死状态
- s:进程的领导者,也就是一个进程的父进程。例如以下,第一列PPID代表父进程ID,第二列PID
代表进程ID。这里我们可以看到PID为1101的进程为其中子进程的父进程,同时它的进程状态为Ss。
[root@cp ~]# ps axjf | grep httpd
1 1101 1101 1101 ? -1 Ss 0 0:18 /usr/sbin/httpd -DFOREGROUND
1101 18178 1101 1101 ? -1 S 48 0:00 \_ /usr/sbin/httpd -DFOREGROUND
1101 18179 1101 1101 ? -1 S 48 0:00 \_ /usr/sbin/httpd -DFOREGROUND
- <:高优先级
- N:低优先级
- +:当前进程运行在前台,R+表示进程正在前台运行
- l:进程是多线程的
- L:进程被锁入内存
• START:进程的启动时间
• TIME:进程占用CPU的运算时间,0表示还没超过秒。
• COMMAND:程序的运行指令,[]属于内核态的进程
(2)ps -elf
[root@cp ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 47713 ep_pol Apr01 ? 00:00:19 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root 2 0 0 80 0 - 0 kthrea Apr01 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo Apr01 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker Apr01 ? 00:00:00 [kworker/0:0H]
1 S root 7 2 0 -40 - - 0 smpboo Apr01 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp Apr01 ? 00:00:00 [rcu_bh]
1 R root 9 2 0 80 0 - 0 - Apr01 ? 00:00:21 [rcu_sched]
• F:进程标志,说明了进程的权限
- 1:进程可以被复制,但不能被执行
- 4:进程使用超级用户权限
• S:进程状态
• UID:运行此进程的用户的ID
• PID:进程运行的ID号
• PPID:父进程运行的ID号
• C:该进程cpu使用率
• PRI:进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行。
- Linux中的PRI(new) = PRI(old) + nice ,其中 PRI(old)为系统算法决定 ,在创建时被赋予
不同的值,用户不可修改 ,用户只能通过修改nice来修改进程的优先级。
• NI:进程的优先级,数值越小,该进程越早被执行。
- 进程优先级的修正量, -20 - 19 ,用户可修改 (root用户可修改nice值-20 - 19 ,普通用户
只能修改nice值0-19 )。一般情况下,子进程继承父进程的nice值,由于init进程的nice值为0,
所有大部分进程的nice值都为 0。
- 用户可通过renice xx 进程号 的命令修改进程的优先级 ,其中xx为nice值,eg : renice -20 22401。
注:PRI(old)被系统保留 ,每执行一次renice xx 进程号命令,都是在PRI(old)基础上+nice值
• ADDR:该进程在内存的哪个位置,"-"代表正在运行
• SZ:该进程占用多大内存
• WCHAN:该进程是否运行。"-"代表正在运行
(3)ps -eLf
[root@cp ~]# ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 Apr01 ? 00:00:19 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 Apr01 ? 00:00:00 [kthreadd]
root 3 2 3 0 1 Apr01 ? 00:00:00 [ksoftirqd/0]
root 5 2 5 0 1 Apr01 ? 00:00:00 [kworker/0:0H]
root 7 2 7 0 1 Apr01 ? 00:00:00 [migration/0]
root 8 2 8 0 1 Apr01 ? 00:00:00 [rcu_bh]
root 9 2 9 0 1 Apr01 ? 00:00:21 [rcu_sched]
• LWP:线程ID,别名SPID、TPID
• NLWP:进程中的线程数