ps命令是什么
 查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。

ps命令支持三种使用的语法格式

1.UNIX风格,选项可以组合在一起,并且选项前必须有"-"连字符
2.BSD风格,选项可以组合在一起,选项前不能有"-"连字符
3.GNU风格,选项前有两个"-"连字符

这里以UNIX风格为例例举生活中使用较多的ps命令的例子。

1.不加参数的ps命令

这是一个基本的 ps 使用。在控制台中执行这个命令并查看结果。

[root@iZm5efz50gckt4z0nw8mobZ ~]# ps
PID TTY          TIME CMD
6410 pts/0    00:00:00 bash
6427 pts/0    00:00:00 ps

结果会显示4条默认信息:

PID:    运行着的命令(CMD)的进程编号
TTY:   命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD:  该进程所运行的命令
2.显示所有当前进程使用

-a 参数。-a 代表 all,显示现行终端机下的所有程序,包括其他用户的程序。同时加上x参数会显示没有控制终端的进程。

[root@iZm5efz50gckt4z0nw8mobZ ~]# ps -ax 

这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。

 [root@iZm5efz50gckt4z0nw8mobZ ~]# ps -ax | less
 PID TTY      STAT  TIME COMMAND
1 ?        Ss    0:03 /sbin/init
2 ?        S      0:00 [kthreadd]
3 ?        S      0:00 [migration/0]
4 ?        S      0:16 [ksoftirqd/0]
5 ?        S      0:00 [stopper/0]
6 ?        S      0:08 [watchdog/0]
7 ?        S      6:49 [events/0]
8 ?        S      0:00 [events/0]
9 ?        S      0:00 [events_long/0]
3.根据用户过滤进程

在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户''的进程,可以通过下面的命令:

[root@iZm5efz50gckt4z0nw8mobZ ~]# ps -u nobody
PID TTY          TIME CMD
8619 ?        00:11:00 mysqld
17957 ?        00:00:43 httpd
18016 ?        00:01:31 httpd
25206 ?        00:01:07 httpd
26995 ?        00:01:55 httpd
4.通过cpu和内存使用来过滤进程

也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息,同样使用管道和less查看一部分:

[root@iZm5efz50gckt4z0nw8mobZ ~]#  ps -aux | less
USER      PID %CPU %MEM    VSZ  RSS TTY      STAT START  TIME COMMAND
root        1  0.0  0.1  19360  1172 ?        Ss    2017  0:03 /sbin/init
root        2  0.0  0.0      0    0 ?        S    2017  0:00 [kthreadd]
root        3  0.0  0.0      0    0 ?        S    2017  0:00 [migration/0]
root        4  0.0  0.0      0    0 ?        S    2017  0:16 [ksoftirqd/0]
root        5  0.0  0.0      0    0 ?        S    2017  0:00 [stopper/0]
root        6  0.0  0.0      0    0 ?        S    2017  0:08 [watchdog/0]
root        7  0.0  0.0      0    0 ?        S    2017  6:49 [events/0]
root        8  0.0  0.0      0    0 ?        S    2017  0:00 [events/0]
root        9  0.0  0.0      0    0 ?        S    2017  0:00 [events_long/0]
root        10  0.0  0.0      0    0 ?        S    2017  0:00 [events_power_ef]
root        11  0.0  0.0      0    0 ?        S    2017  0:00 [cgroup]
root        12  0.0  0.0      0    0 ?        S    2017  0:17 [khelper]
root        13  0.0  0.0      0    0 ?        S    2017  0:00 [netns]
root        14  0.0  0.0      0    0 ?        S    2017  0:00 [async/mgr]
root        15  0.0  0.0      0    0 ?        S    2017  0:00 [pm]
root        16  0.0  0.0      0    0 ?        S    2017  0:20 [sync_supers]
5.显示所有程序

-A或-e参数(区别也-a)。显示所有程序,包括其他终端,一定要注意这个参数区别于-a

[root@iZm5efz50gckt4z0nw8mobZ ~]# ps -A
 PID TTY          TIME CMD
1 ?        00:00:03 init
2 ?        00:00:00 kthreadd
3 ?        00:00:00 migration/0
4 ?        00:00:16 ksoftirqd/0
5 ?        00:00:00 stopper/0
6 ?        00:00:08 watchdog/0
7 ?        00:06:49 events/0
8 ?        00:00:00 events/0
9 ?        00:00:00 events_long/0
6.总结

在Linux下常常使用ps命令结合管道和grep进行相关的操作(ps -ef | grep httpd
和 ps -aux | grep httpd )

[root@iZm5efz50gckt4z0nw8mobZ ~]# ps -ef | grep httpd
root      7747    1  0  2017 ?        00:02:04 /opt/zbox/run/apache/httpd -k start
root      9566  6410  0 19:23 pts/0    00:00:00 grep httpd
nobody  17957  7747  0 Jan10 ?        00:00:43 /opt/zbox/run/apache/httpd -k start
nobody  18016  7747  0 Jan10 ?        00:01:31 /opt/zbox/run/apache/httpd -k start
nobody  25206  7747  0 Jan08 ?        00:01:07 /opt/zbox/run/apache/httpd -k start
nobody  26995  7747  0 Jan11 ?        00:01:57 /opt/zbox/run/apache/httpd -k start
You have mail in /var/spool/mail/root

限于篇幅这里不在赘述,更多相关ps的命令请参考man ps