首页 > 代码库 > 进程管理
进程管理
进程管理
ps
将某个时间点的进程运行情况选取下来
ps aux
ps -lA
ps axjf
A 等于-e,将所有的进程都列出来
a 不与terminal有关的进程
u 有效用户相关的进程
x 与a一起使用,列出较完整信息
l 小写l,较长、较详细的列出信息
j 类似进程树的格式
例
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 批次处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-d <时间> 设置间隔时间
-u <用户名> 指定用户名
-p <进程号> 指定进程
-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
与优先级关系
越低越优先
fuser
通过文件(或文件系统)找出正在使用该文件的程序
fuser [-umv] [-k [i] [-signal]] file/dir
u 列出进程所有者
m 后接文件名会主动上提到该文件系统的所顶层,对umount不成功很有效
v 列出每个文件与程序还有命令的完整相关性
k 找出使用该文件/目录的PID,并试图以sigkill这个信号给予该PID
i 必须与-k配合,会先询问
signal 例如 -1 -15等,若不加默认-9
例
找出目前所在目录的使用PID/所属账号/权限
fuser -uv .
找到所有使用/proc文件夹下任意文件的进程
fuser -muv /proc
找到访问某一文件的所有进程
fuser -uv /var/gdm/.gdmfifo
找到访问某一文件的所有进程,并结束
fuser -uv -ki /var/gdm/.gdmfifo
fuser中access选项的意义
c 此进程在当前目录下(非子目录)
e 可被触发为执行状态
f 是一个被打开的文件
r 代表顶层目录
F 该文件被打开了,不过在等待回应中
m 可能为分享的动态函数库
lsof
找到被进程所打开的文件名
lsof [-aUu] [+d]
a 多项数据需要同时成立
U 仅列出Unix like系统的socket文件类型
u 后跟username,列出该用户相关进程所打开的文件
+d 后跟目录,列出目录下面已经被打开的文件
例
列出目前系统上所有被打开的文件与设备
lsof
列出root的所有进程打开的socket文件
lsof -u root -a -U
列出系统上面所有被启动的周边设备
lsof +d /dev
列出属于root的bash这个进程所打开的文件
lsof -u root | grep bash
pidof
找到某个正在执行的进程的PID
pidof [-sx] program_name
s 仅列出一个PID
x 同时列出该program可能的PPID的那个进程的PID
进程管理