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