一文读懂ps命令

  对于在linux系统开发的工程师来讲,ps命令是常常使用的命令,这个命令能够用来查看进程的进程id,父进程id,进程状态等信息,可是对于ps的用法却总感受不是很熟悉的感受,这里特地花时间整理了ps命令的疑点和经常使用方式。php

首先ps是一个有历史的命令,在unix时期就已经存在,后来linux系统也继承了这个命令,同时其功能是同样的,可是因为系统建立者不一样,其展现风格有差别,总共有三种风格:linux

UNIX 风格,选项能够组合在一块儿, 选项前必须有“-”连字符nginx

BSD 风格,选项能够组合在一块儿,可是选项前不能有“-”连字符。BSD是unix的一个分支php-fpm

GNU 风格的长选项,选项前有两个“-”连字符。GUN计划,后来发展出了Linuxunix

例如 ps -ef 是unix风格 而 ps aux就是BSD风格,orm


unix 风格



BSD风格

两种风格显示的选项仍是有一点的差异的,可是今天的重点是了解ps命令的选项及列的内涵,只有这样才能在咱们须要查看进程的信息时能准确的获取到而不是像之前同样对其只知其一;不知其二。cdn

ps的-A 是显示系统运行的全部进程,无论是后台进程,仍是与终端无关的进程或者是会话进程。blog

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这个命令在平常的使用中基本算是掌握了。对于这个命令中的终端,会话等概念会在下篇文章进行讲解。