PS命令是什么
ps命令能够给出当前系统中进程的快照。它能捕获系统在某一时间的进程状态。如果想要不断更新查看这个状态,可以配合watch命令或使用top命令。
ps命令支持三种使用的语法格式
- UNIX 风格:选项可以组合在一起,并且选项前必须有"-"连字符。
- BSD 风格 :选项可以组合在一起,但是选项前不能有"-"连字符。
- GNU 风格 :长选项,选项前需要有两个"-"连字符。
ps命令基本选项及参数释义
a:显示现行终端机下的所有程序,包括其他用户的程序。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
e:列出程序时,显示每个程序所使用的环境变量。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
h:不显示标题列。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
r:只列出现行终端机正在执行中的程序。
v:采用虚拟内存的格式显示程序状况
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
-c:显示CLS和PRI栏位。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:显示所有程序。
-f:显示UID,PPIP,C与STIME栏位。
-H:显示树状结构,表示程序间的相互关系。
-u<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
-j:采用工作控制的格式显示程序状况
-l或l:采用详细的格式来显示程序状况。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
使用基本的ps命令,在执行之后的结果如下
[[email protected] ~]# ps PID TTY TIME CMD 15422 pts/1 00:00:00 bash 16511 pts/1 00:00:00 ps
结果会默认显示4列信息。
- PID:运行命令的进程编号。
- TTY:命令所运行的终端。tty1 - tty6 是本机登入者,pts/0等为网络连接主机的程序。
- TIME:运行着改命令所占用的CUP处理时间。
- CMD:该进程所运行的命令。
将目前属于自己本次登入的PID与相关信息列示出来
[[email protected] ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 15422 15406 0 80 0 - 30202 wait pts/1 00:00:00 bash 0 R 0 16520 15422 0 80 0 - 37233 - pts/1 00:00:00 ps
- F:这个程序的旗标(flag)4,表示使用者为superuser。
- S:这个程序的状态(STAT)
R:正在运作或是被运作。
S:正在睡眠中,可被讯号唤醒。
T:正在侦测或者停止。
Z:已经停止,但副程序无法正常终止。造成zombie(僵尸)程序状态 - UID:痴行者身份
- C:CPU使用资源百分比
- PRI:进程的执行优先权(Priority),值越小越优先
- NI:进程的nice值,其表示进程可被执行的优先级的修正数值。
- ADDR:内核函数,指出改程序在内存的哪个部分。如果是执行的程序,则为"-"
- SZ:使用的内存大小
- WCHAN:目前这个程序是否正在运行,"-"表示正在运行。
列出目前所有正在内存当中的程序
[[email protected] ~]# ps -ax 0 0 ? S 06:25 0:00 [scsi_eh_0] PID TTY STAT TIME COMMAND 1 ? Ss 0:15 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 2 ? S 0:00 [kthreadd] 3 ? S 0:01 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] 6 ? S 0:04 [kworker/u256:0] 7 ? S 0:02 [migration/0] 8 ? S 0:00 [rcu_bh] 9 ? S 0:17 [rcu_sched] 10 ? S 0:00 [watchdog/0]
-USER:进程属于哪个使用者
- VSZ:占用虚拟内存
- RSS:占用固定内存
- START:程序被触发启动的时间。
- TIME:改程序实际使用CPU运作的时间。
- COMMAND:改程序实际指令
常用选项组合
查看全部进程ps -ax
[[email protected] ~]# ps -ax PID TTY STAT TIME COMMAND 1 ? Ss 0:15 /usr/lib/systemd/systemd --switched-root --system --d 2 ? S 0:00 [kthreadd] 3 ? S 0:01 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] 6 ? S 0:04 [kworker/u256:0] 7 ? S 0:02 [migration/0] 8 ? S 0:00 [rcu_bh]
根据用户过滤进程ps -u root
[[email protected] ~]# ps -u root PID TTY TIME CMD 1 ? 00:00:15 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:01 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 6 ? 00:00:04 kworker/u256:0 7 ? 00:00:02 migration/0 8 ? 00:00:00 rcu_bh
通过CPU和内存过滤进程ps -aux
[[email protected] ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 193628 6800 ? Ss 06:25 0:15 /usr/lib/system root 2 0.0 0.0 0 0 ? S 06:25 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 06:25 0:01 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 06:25 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 06:25 0:04 [kworker/u256:0 root 7 0.0 0.0 0 0 ? S 06:25 0:02 [migration/0] root 8 0.0 0.0 0 0 ? S 06:25 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 06:25 0:17 [rcu_sched]
根据线程来过滤进程ps -L 3223
\
[[email protected] ~]# ps -L 3223 PID LWP TTY STAT TIME COMMAND 3223 3223 ? Sl 0:00 /usr/libexec/ibus-x11 --kill-daemon 3223 3229 ? Sl 0:00 /usr/libexec/ibus-x11 --kill-daemon 3223 3230 ? Sl 0:00 /usr/libexec/ibus-x11 --kill-daemon
树形显示进程ps -axjf``pstree
\
[[email protected] ~]# ps -afjx PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:01 \_ [ksoftirqd/0] 2 5 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H] 2 6 0 0 ? -1 S 0 0:04 \_ [kworker/u256:0] 2 7 0 0 ? -1 S 0 0:02 \_ [migration/0] 2 8 0 0 ? -1 S 0 0:00 \_ [rcu_bh] 2 9 0 0 ? -1 S 0 0:17 \_ [rcu_sched] 2 10 0 0 ? -1 S 0 0:00 \_ [watchdog/0] 2 11 0 0 ? -1 S 0 0:00 \_ [watchdog/1] 2 12 0 0 ? -1 S 0 0:01 \_ [migration/1] 2 13 0 0 ? -1 S 0 0:02 \_ [ksoftirqd/1] 2 16 0 0 ? -1 S 0 0:00 \_ [watchdog/2] 2 17 0 0 ? -1 S 0 0:00 \_ [migration/2] 2 18 0 0 ? -1 S 0 0:01 \_ [ksoftirqd/2]
[[email protected] ~]# pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager─┬─2*[dhclient] │ └─2*[{NetworkManager}] ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───2*[{at-spi2-registr}] ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd}
手工筛选信息ps -eo pid,user,args
[[email protected] ~]# ps -eo pid,user,args PID USER COMMAND 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 21 2 root [kthreadd] 3 root [ksoftirqd/0] 5 root [kworker/0:0H] 6 root [kworker/u256:0] 7 root [migration/0] 8 root [rcu_bh] 9 root [rcu_sched] 10 root [watchdog/0] 11 root [watchdog/1]
使用watch实时监控进程状态watch -n1 ‘ps -aux‘
[[email protected] ~]# watch -n1 ‘ps -aux‘ Every 1.0s: ps -aux Sun Jul 9 20:20:39 2017 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 193628 6800 ? Ss 06:25 0:15 /usr/lib/systemd/systemd --switched-root --system --d root 2 0.0 0.0 0 0 ? S 06:25 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 06:25 0:01 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 06:25 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 06:25 0:04 [kworker/u256:0] root 7 0.0 0.0 0 0 ? S 06:25 0:02 [migration/0] root 8 0.0 0.0 0 0 ? S 06:25 0:00 [rcu_bh]