1.ps命令由于历史原因,版本比较多,主要分为三种版本
1)Unix风格的版本,命令参数加单横线。比如ps -ef
2)BSD风格的版本,命令参数前不加任何横线。比如ps aux
3)GNU风格的版本,命令参数前加双横线。比如ps --deselect --forest //显示所有进程,并且显示出进程的父子关系,就是显示出哪个进程创建了哪些进程。
2.由于ps命令较为复杂,一般的管理员会记住某些有用的命令组合来提取有用的进程信息的参数。
比如说你要查看系统上运行的所有进程的一些有用的信息,Unix风格的ps -ef命令可能是一个好的选择,它会提供给你(进程创建者uid,进程pid,进程父亲ppid,进程生命周期中的cpu利用率,进程启动时间,进程在哪个个终端上启动,从启动到现在使用cpu的总时间,命令的名称),注意:TTY代表进程在哪个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。附上一张ps -ef的图片。
当然,BSD风格的ps也不赖,它说它也有相应的命令,也能看进程的一些有用的信息,比如ps ax能查看所有进程的粗略的信息(进程pid,进程在哪个个终端上运行,进程的状态,该进程从开始到现在实际使用cpu的总时间,启动的命令),注意:许多管理员更喜欢使用BSD风格的原因和这个STAT字段有关系,他能更详细的输出进程的状态。因为它使用的是双字符来输出状态,而Unix风格的STAT列是单字符的状态。第一个字符采用了和Unix单列一样的值(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在),第二个字符是Unix风格所没有的,是BSD独有的,更加详细地说明了进程的状态。(<:代表该进程运行在高优先级;N:代表该进程运行在低优先级;L:代表该进程有页面锁定在内存中;s:代表该进程是控制进程;l:小L代表该进程是多线程的;+:代表进程运行在前台)附上一张ps ax的图片。
ps ax只是显示了部分的信息,如果不够的话,还有它的大哥叫 ps aux可以显示更多的信息
比ps ax多出来的是USER列,代表启动这个进程的用户名称,%CPU代表当前这一刻,cpu占用的百分比,%MEM代表内存占用的百分比,VSZ代表的是进程在内存中占用的大小,单位是KB;RSS代表的是进程在未换出时占用的物理内存。
3.GNU长参数类型使用的比较少,但是我比较喜欢用它来查看一下进程之间的层级关系,ps --forest --deselect可以显示所有进程的树状图。
4.ps命令的参数很多,但是绝大多数场景下,上边列出的参数组合基本够用,如果还需要查看更多信息,可以查阅man手册。