ps命令,用于查看当前系统的进程状态命令
常用方法
标准风格
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul12 ? 00:06:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 Jul12 ? 00:00:00 [kthreadd]
root 3 2 0 Jul12 ? 00:00:00 [rcu_gp]
ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 31348 3148 1 Jul12 ? 00:06:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 0 0 0 Jul12 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 0 Jul12 ? 00:00:00 [rcu_gp]
ps -ely
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 0 1 0 0 80 0 3148 31348 ep_pol ? 00:06:07 systemd
S 0 2 0 0 80 0 0 0 kthrea ? 00:00:00 kthreadd
I 0 3 2 0 60 -20 0 0 rescue ? 00:00:00 rcu_gp
-e
: 列出系统所有的进程
-f
: 显示UID,PPIP,C与STIME栏位
-F
: 显示UID,PPIP,C,SZ,RSS,PSR与STIME栏位
-l
: 采用详细格式输出进程状况
-y
: 配合参数”I"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位
输出信息介绍
UID
: 程序被该 UID 所拥有
PID
: 就这个程序的ID
PPID
: 其上级父程序的ID
C
: CPU使用的资源百分比
STIME
: 该 process 被触发启动的时间
TTY
: 该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
TIME
: 该 process 实际使用 CPU 运作的时间
CMD
: 该程序的实际指今
SZ
: 使用掉的内存大小
RSS
: Resident Size常驻内存集
PSR
: 进程运行在哪颗cpu上
PRI
: Priority (优先执行序) 的缩写
NI
: Nice 值 优先级。范围从19(最高)到-20(最低)。
WCHAN
: 当前进程是否正在运行,若为- 表示正在运作
S
: state 进程状态
进程状态值
-
D
不可中断休眠(IO) -
I
(大写i) 空闲内核线程 -
R
正在运行或可运行(在运行队列) -
S
可中断休眠(等一个时间来完成) -
T
因作业控制信号而停止 -
t
在跟踪期间被调试器停止 -
W
分页(内核2.6.x版本后无效) -
X
已杀死(应该永远不会看到) -
Z
僵尸进程
BSD风格
ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 125720 3756 ? Ss Apr05 9:38 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Apr05 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< Apr05 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S Apr05 14:02 [ksoftirqd/0]
a
: 显示现行终端机下的所有程序,包括其他用户的程序;
u
: 以用户为主的格式来显示程序状况;
x
: 显示所有程序,不以终端机来区分。
输出信息介绍
%CPU
: 进程当前使用的 CPU 百分比。
%MEM
: 进程当前使用的内存百分比。
VSZ
: 进程的虚拟内存大小(以 KB 或 MB 为单位)。
stat
额外标识
-
<
高优先级 -
N
低优先级 -
L
内存有被锁定的页(实时和自定义IO) -
s
是会话领导 -
l
(小写L) 是多线程的(使用CLONE_THREAD,类似NPTL pthreads) -
+
在前台进程组里
打印进程树
ps -ejH
PID PGID SID TTY TIME CMD
1 1 1 ? 00:06:25 systemd
518 518 518 ? 01:18:58 systemd-journal
555 555 555 ? 00:00:00 systemd-udevd
575 575 575 ? 00:00:00 lvmetad
676 676 676 ? 00:00:05 auditd
ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 990 990 990 ? -1 Ss 0 0:00 /usr/sbin/sshd -D
990 99459 99459 99459 ? -1 Ss 0 0:00 \_ sshd: root@pts/0
99459 99461 99461 99461 pts/0 99606 Ss 0 0:00 | \_ -bash
99461 99606 99606 99461 pts/0 99606 S+ 0 0:00 | \_ man ps
99606 99617 99606 99461 pts/0 99606 S+ 0 0:00 | \_ less -s
990 99906 99906 99906 ? -1 Ss 0 0:00 \_ sshd: root@pts/1
99906 99912 99912 99912 pts/1 105190 Ss 0 0:00 \_ -bash
99912 105190 105190 99912 pts/1 105190 R+ 0 0:00 \_ ps axjf
-j或j
: 采用作业控制的格式显示进程
-H
:显示树状结构,表示程序间的相互关系。
-f
:显示UID,PPIP,C与STIME栏位。
f
:用ASCII字符显示树状结构,表达程序间的相互关系。
输出信息
pgid
: 是组 pid,等于组首领 pid
sid
: session id, 等于 session 首领 pid.
tpgid
: 表示进程连接到的tty(终端)所在的前台进程组的ID。
查看线程信息
ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 Jul12 ? 00:06:26 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 Jul12 ? 00:00:00 [kthreadd]
root 3 2 3 0 1 Jul12 ? 00:00:00 [rcu_gp]
root 4 2 4 0 1 Jul12 ? 00:00:00 [rcu_par_gp]
root 6 2 6 0 1 Jul12 ? 00:00:00 [kworker/0:0H-kb]
-L
输出线程信息
输出信息
LWP
:表⽰这是个线程;要么是主线程(进程),要么是线程
NLWP
: num of light weight process 轻量级进程数量,即线程数量
自定义输出格式
查看栏位信息
ps L
自定义栏位
ps -eo state,pid,command
S PID COMMAND
S 1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
S 2 [kthreadd]
I 3 [rcu_gp]
I 4 [rcu_par_gp]
I 6 [kworker/0:0H-kb]
一些实例
ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3 # 按 CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -eLf # 查看线程数
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列
ps -ef # 显示所有进程信息,连同命令行
ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程
ps -C nginx # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程
ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签
ps -e -o pid,comm,etime # 显示进程运行的时间
ps -aux | grep named # 查看named进程详细信息
ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称