Linux性能优化之ps
Linux性能优化之ps
1 ps简介
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
2 ps用法
2.1 ps语法
ps [options] [--help]
2.2 ps参数详解
参数 含义
-A 所有的进程均显示出来,与 -e 具有同样的效用
-a 显示现行终端机下的所有进程,包括其他用户的进程
c 显示进程的真实名称
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-j 显示进程的PGID与SID
-l(list) 以列表的形式显示进程的信息
r 显示当前终端运行的进程
T 显示当前终端的所有进程
-u 显示当前用户创建的所有进程
u user 显示指定用户创建的所有进程
-x 显示系统中所有后台进程
-aux 列出目前所有的正在内存中运行的程序
3 ps使用示例
# ps –A //显示所有进程信息
PID TTY TIME CMD
1 ? 00:00:09 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-kb
9 ? 00:00:00 mm_percpu_wq
10 ? 00:00:00 ksoftirqd/0
……
63863 ? 00:00:00 kworker/2:1-cgr
63867 ? 00:00:00 kworker/u256:0-
63915 ? 00:00:00 kworker/u256:2-
63922 ? 00:00:00 kworker/u256:1-
63923 pts/0 00:00:00 ps
ps -u root //显示root用户所有进程信息
PID TTY TIME CMD
1 ? 00:00:09 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-kb
9 ? 00:00:00 mm_percpu_wq
10 ? 00:00:00 ksoftirqd/0
11 ? 00:00:24 rcu_sched
12 ? 00:00:02 migration/0
13 ? 00:00:00 idle_inject/0
14 ? 00:00:00 cpuhp/0
15 ? 00:00:00 cpuhp/1
16 ? 00:00:00 idle_inject/1
# ps –lf //以列表的形式显示当前终端进程间的关系
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 5242 4873 0 80 0 - 16918 poll_s 8月24 pts/0 00:00:00 sudo su
4 S root 5243 5242 0 80 0 - 16721 wait 8月24 pts/0 00:00:00 su
4 S root 5244 5243 0 80 0 - 6129 wait 8月24 pts/0 00:00:00 bash
4 R root 63942 5244 0 80 0 - 10355 - 16:41 pts/0 00:00:00 ps -lf
# ps –ef //显示所有命令,连带命令行
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 8月24 ? 00:00:09 /sbin/init splash
root 2 0 0 8月24 ? 00:00:00 [kthreadd]
root 3 2 0 8月24 ? 00:00:00 [rcu_gp]
root 4 2 0 8月24 ? 00:00:00 [rcu_par_gp]
root 6 2 0 8月24 ? 00:00:00 [kworker/0:0H-kb]
root 9 2 0 8月24 ? 00:00:00 [mm_percpu_wq]
root 10 2 0 8月24 ? 00:00:00 [ksoftirqd/0]
root 11 2 0 8月24 ? 00:00:25 [rcu_sched]
root 12 2 0 8月24 ? 00:00:02 [migration/0]
root 13 2 0 8月24 ? 00:00:00 [idle_inject/0]
root 14 2 0 8月24 ? 00:00:00 [cpuhp/0]
root 15 2 0 8月24 ? 00:00:00 [cpuhp/1]
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 - 56457 ep_pol 8月24 ? 00:00:09 /sbin/init splash
1 S root 2 0 0 80 0 - 0 kthrea 8月24 ? 00:00:00 [kthreadd]
1 I root 3 2 0 60 -20 - 0 rescue 8月24 ? 00:00:00 [rcu_gp]
1 I root 4 2 0 60 -20 - 0 rescue 8月24 ? 00:00:00 [rcu_par_gp]
1 I root 6 2 0 60 -20 - 0 worker 8月24 ? 00:00:00 [kworker/0:0H-kb]
1 I root 9 2 0 60 -20 - 0 rescue 8月24 ? 00:00:00 [mm_percpu_wq]
1 S root 10 2 0 80 0 - 0 smpboo 8月24 ? 00:00:00 [ksoftirqd/0]
ps –aux //显示当前正在运行的所有进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 225828 9456 ? Ss 8月24 0:09 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 8月24 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 8月24 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 8月24 0:00 [rcu_par_gp]
root 6 0.0 0.0 0 0 ? I< 8月24 0:00 [kworker/0:0H-kb]
root 9 0.0 0.0 0 0 ? I< 8月24 0:00 [mm_percpu_wq]
root 10 0.0 0.0 0 0 ? S 8月24 0:00 [ksoftirqd/0]
root 11 0.0 0.0 0 0 ? I 8月24 0:25 [rcu_sched]
ps各字段的含义
USER 进程所属的用户
F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S 代表这个程序的状态 (STAT);
UID 代表执行者身份
PID 进程的ID号!底下的 PPID 则父进程的ID;
C/%CPU CPU使用的资源百分比;
%MEM 进程所占用的物理内存百分比;
VSZ 进程使用掉的虚拟内存量
RSS 进程占用的固定的内存量
PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值;
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY 登入者的终端机位置啰;
TIME 使用掉的 CPU 时间;
STAT 程序目前的状态,主要状态有:R、S、T、Z、D
START 该进程被触发启动的时间
CMD 所下达的指令名称
4 ps上进程的状态
D 不可中断 uninterruptible sleep (usually IO) :不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
R 运行 runnable (on run queue) :运行(正在运行或在运行队列中等待)
S 中断 sleeping:中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T 停止 traced or stopped:停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
Z 僵死 a defunct (”zombie”) process:僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
还没有评论,来说两句吧...