从零开始学shell之ps命令
一 前言
对于线上遇到问题,我们经常要定位进程的各种状态(是否存在,是否运行,启动命令,占用内存和cpu,端口等等)。这些问题的分析都离不开ps命令,所以要好好掌握它。
二 ps命令
2.1 简介
ps命令是Process Status的缩写,就像它名字一样,用来确定进程状态。ps命令的结果是当前操作系统中进程的快照,动态显示进程信息需要使用top命令。
2.2 进程参数风格
ps的命令参数分为三种风格:
- UNIX风格,参数前面必须加-
- BSD风格,参数前面不能加-
- GNU风格,参数前面加-- ps:我经常用的是BSD风格
2.3 进程参数说明
参数说明a还没搞清楚似乎是把当前terminal运行的所有进程显示出来u显示进程的更详细信息和ax参数同时使用可以列出所有进程的详细信息x显示所有属于你的进程和a参数同时使用可以列出所有进程f通过树形结构,显示进程之间的继承关系和aux参数同时使用可以显示所有进程之间的继承关系m在进程后面显示所属线程,不能和f参数一起使用。数量较多时候,可以管道到more命令翻页查看
2.4 进程状态说明
状态说明D不可打断休眠状态,通常来说是等待IO,或者内核消息R运行状态S可打断休眠状态,通常来说是等待一个事件来完成T被job控制停止状态tdebugger停止状态X死亡态 理论上应该不可见Z僵尸态,已经停止了,但是没有被父进程回收
bsd风格的命令会带有附加状态,如下:
状态说明<高优先级状态N低优先级状态L换页锁住内存状态s一个session领导者l多进程状态+在一个前台进程组中
2.5 显示各列说明
名称说明USER进程所属用户名PID进程id%CPU进程使用CPU占比。这个不是占用的CPU资源的百分比。它的计算公示如下:cputime/realtime ratio,也就是运行时间中使用cpu的比率%MEM进程占用物理内存的比率,这个是比较重要的一个参数。VSZ进程使用掉的虚拟内存量RSS进程占用的固定的内存量TTY进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。STAT进程目前的状态。具体含义见上节START进程触发启动的时间TIME进程实际使用CPU运作的时间(用户态和内核态)COMMAND进程实际的启动指令
三 总结
还有很多用法,暂时总结到这里,后续有更深的了解后继续补充