shell学习—进程处理
ps
ps默认情况下只会显示运行在当前控制台下的属于当前用户的进程。使用格式如下:
ps [option]
几个常用参数:
- -a 显示除控制进程和无终端进程外的所有进程
- -e 显示所有进程
- -f 显示完整的输出格式
如果我们想查找所有的进程组合:
ps -ef
通过进程名查找进程pid:
ps -ef | grep name | grep -v grep | awk ‘{print $2}’
top
top命令和ps命令相似,能实时显示进程信息。使用格式如下:
ps [option]
几个常用的参数:
- -d 指定两次屏幕信息刷新的时间间隔,单位为秒
- -p 指定监听进程的pid
- -b 以批处理的模式运行,直接将结果输出到文件
最简单的使用方式,默认每隔3s刷新屏幕:
top
显示信息如上图,Load average表示平均负载,3个值分别代表最近1min、最近5min和最近15min的负载,值越大说明系统负载越高。如果近15min内的平均负载都很高,说明系统可能有问题。
第二行表示有多少进程处于运行、休眠、停止或僵尸状态。
默认情况下top命令在启动时按照%cpu排序,在top命令运行时可以使用交互命令重新排序。输入f允许你选择对输出进行排序的字段,输入d修改轮询时间。
指定屏幕信息刷新频率为5s:
top -d 5
指定监听的进程:
top -p pid1 -p pid2
每隔10s监听某个进程的进程信息,保存到文件test.log中:
top -d 5 -p pid -b > test.log
利用上述的命令我们可以统计某个进程在一段时间内cpu和内存的变化。
top -d 5 -p pid -b > test.log & |
lsof
可以用来列出进程所打开的文件。使用格式:
lsof [option] [name]
列出进程所打开的文件:
lsof -p pid
列出拥有某个文件句柄的进程:
lsof file_path
由于系统异常上下电,导致某些文件损坏,需要排查有哪些进程拥有这些文件的句柄,这个命令能提供较好的支持。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jzy2015 blog!