对于在linux系统开发的工程师来说,ps命令是经常使用的命令,这个命令可以用来查看进程的进程id,父进程id,进程状态等信息,但是对于ps的用法却总感觉不是很熟悉的感觉,这里特意花时间整理了ps命令的疑点和常用方式。
首先ps是一个有历史的命令,在unix时期就已经存在,后来linux系统也继承了这个命令,同时其功能是一样的,但是由于系统创建者不同,其展示风格有差异,总共有三种风格:
UNIX 风格,选项可以组合在一起, 选项前必须有“-”连字符
BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符。BSD是unix的一个分支
GNU 风格的长选项,选项前有两个“-”连字符。GUN计划,后来发展出了Linux
例如 ps -ef 是unix风格 而 ps aux就是BSD风格,
unix 风格 BSD风格两种风格显示的选项还是有一点的差别的,但是今天的重点是了解ps命令的选项及列的内涵,只有这样才能在我们需要查看进程的信息时能准确的获取到而不是像以前一样对其一知半解。
ps的-A 是显示系统运行的所有进程,不管是后台进程,还是与终端无关的进程或者是会话进程。
ps -e 这个和上面的效果是一样。
ps -a 显示除了会话的创建者(在linux这种多用户系统中,每个用户登录就是一个会话,然后其创建的进程就属于这个会话进行管理)和与终端无关的进程----终端无关的进程就是 tty那列显示问号的?。
ps a显示所有和终端有关的进程,就是 tty那列不为?的。(与终端有关还是无关是决定这个进程在窗口关闭后是否还能继续执行的关键,比如nginx和php-fpm这种进程就不能与终端有关,需要一直在后台运行)。
ps T 显示当前终端的进程,就是tty列为当前终端值的进程。
ps x 显示属于当前用户的进程 等于 ps -u 用户名。
ps -ax 这个值不存在 只有 ps ax 结果就是 ps -A或ps -e。
ps -d 显示除了会话创建者外的所有进程。
ps -f 表示full 表示详细内容。
ps -H hierarchy表是层级关系,这个不太常用,可以忽略。
ps C 表示cpu占用。
ps -o 后边跟 format 格式。
ps -eo pid,ppid,s(进程状态 就是stat),cmd(运行进程的命令),tty,etime(进程运行的时长,e是elapse的缩写),lstart(进程开始时间),uname(用户名)。
连接了上面这些选项后 ps这个命令在日常的使用中基本算是掌握了。对于这个命令中的终端,会话等概念会在下篇文章进行讲解。
网友评论