进程管理
背景知识
http://www.cnblogs.com/vamei/archive/2012/09/20/2694466.html
linux命令
ps
将某个时间点的进程运行情况选取下来
ps aux
ps -lA
ps axjf
A 等于-e,将所有的进程都列出来
a 不与terminal有关的进程
u 有效用户相关的进程
x 与a一起使用,列出较完整信息
l 小写l,较长、较详细的列出信息
j 类似进程树的格式
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
https://www.jianshu.com/p/3667157d63bb
例
ps -l
进程标识
4--权限为root
1--此进程仅可复制fork,不可执行exec
进程状态
R--Running,运行中
S--Sleep,睡眠状态
D--不可被唤醒的睡眠状态,通常可能在等待I/O
T--Stop,停滞状态,可能在后台暂停或除错状态
Z--Zombie,僵尸进程,进程已终止,无法被删除
Kernel function
进程在内存中的位置,running为"-"
登录者的终端机
pts/n表示动态终端接口,由网络连接进主机的进程
tty1~6表示本季上面的登录程序
?表示与终端机无关
ps aux
监控java线程数
ps -eLf | grep java | wc -l
pstree
可以很直观的反映出进程之间的相关性
pstree [-A|U] [-up]
A 进程树以ASCII字符连接
U 进程树以utf8码的字符连接,某些终端下可能会错误
u 列出每个进程的账号名称
p 列出每个进程的PID
例
pstree -A
pstree -Ap
top
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
top [ 参数 ]
-b 批次处理 - (加此参数可以解决bash中执行“top &”命令时,该后台进程暂停stop,无法输出日志问题 - 本人使用python脚本抓取cpu实时占用率时,就碰到此问题,排除了python的后台执行、子shell等问题,最终定位到此)
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-d <时间> 设置间隔时间
-u <用户名> 指定用户名
-p <进程号> 指定进程
-H 线程模式,如果不加该选项,进程显示的为线程所占资源总和
-n <次数> 循环显示的次数
top中按键
按键 作用
1 监控每个逻辑CPU的使用状况
y 加粗运行态进程
b 加亮当前加粗列
x 加粗当前排序列
shift+</shift+> 向左/向右改变排序列
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s
l 关闭/显示平均负载和启动时间信息
m 关闭/显示内存信息
t 关闭/显示进程和CPU状态信息
c 关闭/显示命令名称和完整命令行
i 忽略闲置和僵死进程。这是一个开关式命令。
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
例
分析
系统负载/逻辑CPU数>5 说明超负荷运转
steal time
%st(Steal time):是当hypervisor服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。
高steal值 可能意味着主机供应商在服务器上过量地出售虚拟机
低steal值 意味着你的虚拟机不会经常地为了CPU时间与其它虚拟机激烈竞争.
PRIORITY与NICE值
PRI
动态优先级
调整
用户无法直接调整,可以通过调整NICE值达到间接调整的目的
PRI(new)=PRI(old)+ NICE
与优先级关系
越低越优先
NICE
静态优先级,范围:-20~19
调整
root可以调整所有人的进程-20~19,一般用户,仅可调整自己的0~19
新进程赋予NICE值
nice [-n 数字] command
更改已存在进程NICE值
renice [数字] PID
与优先级关系
越低越优先
linux top命令VIRT,RES,SHR,DATA的含义
http://blog.51cto.com/zhoufayong/1548704
fuser
http://www.cnblogs.com/pengdonglin137/p/4581091.html
lsof
http://www.cnblogs.com/samhugh/p/3613044.html
pidof
找到某个正在执行的进程的PID
pidof [-sx] program_name
s 仅列出一个PID
x 同时列出该program可能的PPID的那个进程的PID
参考资料
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
https://www.jianshu.com/p/3667157d63bb
ps 和 top cpu 占用区别