不幸的是,强大的功能导致其复杂性,使得ps命令成为可能最难掌握的命令之一,大多数系统管理员发现ps命令的一部分足够生成他们需要的数据,然后他们就会一直使用这些参数,然后这也说明基本的ps命令并不能提供太多信息.
默认情况下,ps命令只显示属于当前用户并正在当前终端中运行的进程
[root@mio-test Test]# ps PID TTY TIME CMD 29599 pts/0 00:00:00 bash 29766 pts/0 00:00:00 ps
ps命令参数
-A 显示所有进程
-N 显示特定参数的结果的补集
-a 显示除会话标题和无终端进程外的所有进程
-d 显示除回话标题外的所有进程
-e 显示所有进程
-C 显示包含在cmdlist列表中的进程
-G 显示grillst列表中具有组ID的进程
-U 显示userlist列表中的userid拥有的进程
-g 根据会话或包含在grplist中的groundid来显示进程
-p 显示pidlist列表中具有PID的进程
-s 显示sesslist列表中具有ID的进程
-t 显示ttylist列表中具有终端ID的进程
-u 根据user list列表中you’xiao 的userid来显示进程
-F 使用额外完整输出
-O 显示format列表中特定列和默认列
-M 显示关于进程的安全问题
-c 显示关于进程的额外调度信息
-f 显示完整的格式列表
-j 显示作业信息
-l 显示长列表
-o 只显示format中列出的特定列
-y 不显示进程标记
-z 显示安全的上下文信息
-H 以层级格式显示进程(显示父进程)
-n 定义在WCHAN列显示的值
-w 使用宽输出格式,使显示宽度不受限制
-L 显示进程线程
-V 显示ps的版本
上面已经列出了许多参数,但这只是其中的一部分,使用ps命令的关键不是记住所有可用的参数,而是仅记住最有用的参数,比如,如果需要查看系统上运行的一切程序,可以使用-ef参数组合
[root@mio-test Test]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Aug25 ? 00:00:00 /sbin/init root 2 0 0 Aug25 ? 00:00:00 [kthreadd] root 3 2 0 Aug25 ? 00:00:00 [migration/0] root 4 2 0 Aug25 ? 00:00:22 [ksoftirqd/0] root 5 2 0 Aug25 ? 00:00:00 [migration/0] root 6 2 0 Aug25 ? 00:00:22 [watchdog/0] root 7 2 0 Aug25 ? 00:00:00 [migration/1] root 8 2 0 Aug25 ? 00:00:00 [migration/1] root 9 2 0 Aug25 ? 00:00:08 [ksoftirqd/1] root 10 2 0 Aug25 ? 00:00:19 [watchdog/1] root 11 2 0 Aug25 ? 00:08:53 [events/0]
通过使用-e参数用于系统上运行的所有进程,-f参数用于扩展输出以显示一些有用的信息列
UID 负责启动进程的用户
PID 进程ID
PPID 父进程PID(如果某个进程由另一个进程启动)
C 进程存续期的处理器利用率
STIME 进程启动时的系统时间
TTY 进程从中启动的终端设备
TIME 运行进程所需的累计CPU时间
CMD 启动程序的名称
需要希望查看更多的信息,可以使用-l参数
[root@mio-test Test]# ps -efl F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 725 - Aug25 ? 00:00:00 /sbin/init 1 S root 2 0 0 80 0 - 0 - Aug25 ? 00:00:00 [kthreadd] 1 S root 3 2 0 -40 - - 0 - Aug25 ? 00:00:00 [migration/0] 1 S root 4 2 0 80 0 - 0 - Aug25 ? 00:00:22 [ksoftirqd/0] 1 S root 5 2 0 -40 - - 0 - Aug25 ? 00:00:00 [migration/0] 5 S root 6 2 0 -40 - - 0 - Aug25 ? 00:00:22 [watchdog/0] 1 S root 7 2 0 -40 - - 0 - Aug25 ? 00:00:00 [migration/1] 1 S root 8 2 0 -40 - - 0 - Aug25 ? 00:00:00 [migration/1] 1 S root 9 2 0 80 0 - 0 - Aug25 ? 00:00:08 [ksoftirqd/1] 5 S root 10 2 0 -40 - - 0 - Aug25 ? 00:00:19 [watchdog/1]
注意使用-l参数时显示的额外列
F 内核分配给进程的系统标记
S 进程的状态(O=在处理器运行,S=睡眠,R=可运行,Z=死进程,T=进程已停止)
PRI 进程的优先级(数字越大表示优先级越低)
NI nice value 用于判断优先级
ADDR 进程的内存地址
SZ 换出进程大致需要的交换空间
WCHAN 进程睡眠时所在的内核函数地址
-H 参数将进程组织分层,可以显示哪些流程是随其他进程一起启动的
[root@mio-test Test]# ps -efH root 1195 1 0 Aug25 ? 00:00:00 /usr/sbin/console-kit-daemon --no-daemon root 28478 1 0 11:02 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nobody 29752 28478 0 17:17 ? 00:00:00 nginx: worker process nobody 29753 28478 0 17:17 ? 00:00:01 nginx: worker process root 29115 1 0 14:22 ? 00:00:26 php ./serverd restart