在操作中使用 ps 命令的实用方法

大家好,
我是系统解决方案部的冈崎。
这次,我将为大家介绍操作中经常用到的ps命令。
什么是 PS 命令?
显示当前正在运行的进程的命令如下:
ps [选项]
此命令允许您通过指定各种选项来指定要显示的进程。
使用示例
$ ps PID TTY TIME CMD 12558 pts/0 00:00:00 sudo 12559 pts/0 00:00:00 su 12560 pts/0 00:00:00 bash 12611 pts/0 00:00:00 ps
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 1.4 0.2 19632 2492 ? Ss 11:53 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 11:53 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 11:53 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S 11:53 0:00 [kworker/0:0] root 5 0.0 0.0 0 0 ? S< 11:53 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 11:53 0:00 [kworker/u30:0] root 7 0.0 0.0 0 0 ? S 11:53 0:00 [rcu_sched] root 8 0.0 0.0 0 0 ? S 11:53 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 11:53 0:00 [migration/0] root 10 0.0 0.0 0 0 ? S< 11:53 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? 11:53 0:00 [kdevtmpfs] root 13 0.0 0.0 0 0 ? S< 11:53 0:00 [netns] root 14 0.0 0.0 0 0 ? S 11:53 0:00 [kworker/u30:1] root 16 0.0 0.0 0 0 ? S 11:53 0:00 [xenwatch] root 17 0.0 0.0 0 0 ? S 11:53 0:00 [kworker/u30:2] root 21 0.0 0.0 0 0 ? S 11:53 0:00 [xenbus]
或者
$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 11:53 ? 00:00:00 /sbin/init root 2 0 0 11:53 ? 00:00:00 [kthreadd] root 3 2 0 11:53 ? 00:00:00 [ksoftirqd/0] root 4 2 0 11:53 ? 00:00:00 [kworker/0:0] root 5 2 0 11:53 ? 00:00:00 [kworker/0:0H] root 6 2 0 11:53 ? 00:00:00 [kworker/u30:0] root 7 2 0 11:53 ? 00:00:00 [rcu_sched] root 8 2 0 11:53 ? 00:00:00 [rcu_bh] root 9 2 0 11:53 ? 00:00:00 [migration/0] root 10 2 0 11:53 ? 00:00:00 [lru-add-drain] root 11 2 0 11:53 ? 00:00:00 [cpuhp/0] root 12 2 0 11:53 ? 00:00:00 [kdevtmpfs]
虽然显示方式可能有所不同,但您可以输出服务器上当前正在运行的进程列表。
您可以使用以下命令查找当前有多少个同名进程正在运行。
$ ps -ef | grep [要检查的进程] | wc -l 或 ps aux | grep [要检查的进程] | wc -l 31
$ ps -eo pid,user,rss,pcpu,pmem,args PID USER RSS %CPU %MEM COMMAND 1 root 2456 0.3 0.2 /sbin/init 2 root 0 0.0 0.0 [kthreadd] 3 root 0 0.0 0.0 [ksoftirqd/0] 4 root 0 0.0 0.0 [kworker/0:0] 5 root 0 0.0 0.0 [kworker/0:0H]
在这个例子中,会显示进程 ID、用户、物理内存使用量、CPU 使用量、内存使用量和进程名称。
通过这种方式,您可以仅显示指定的项目,并仅输出必要的信息。
可以指定的项目有很多,所以我们将介绍其中的一些。
pcpu (%cpu) - 进程 CPU 使用率
pmem (%mem) - 内存使用率
args (cmd, command) - 带字符串参数的命令
pid - 进程 ID
ppid - 父进程 ID
uid (euid) - 执行用户 ID
gid (egid) - 执行组 ID
user (euser, uname) - 执行用户
group (egroup) - 执行组
rss (rssize, rsz) - 物理内存使用率
lstart - 进程启动时间
$ ps -eo pid,user,rss,args --sort rss PID USER RSS COMMAND 2667 ec2-user 2424 ps -eo pid,user,rss,args --sort rss 2232 root 2428 auditd 1 root 2464 /sbin/init 2544 root 2528 crond 1533 root 2572 /sbin/udevd -d 2253 root 2592 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 2480 root 2596 /usr/sbin/sshd 2314 rpcuser 3160 rpc.statd 2639 ec2-user 3416 -bash 2519 smmsp 3848 sendmail: Queue runner@01:00:00对于 /var/spool/clientmqueue 2638 ec2-user 3988 sshd: ec2-user@pts/0 2510 root 4084 sendmail: 接受连接 2490 ntp 4332 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
示例中,RSS 结果已排序。
请注意,您无法按项目排序。
以下是按 httpd 进程启动时间排序的结果。
$ ps -eo pid,lstart,args --sort lstart | grep httpd PID STARTED COMMAND 21544 Thu Aug 3 14:57:43 2017 /usr/sbin/httpd 21733 Thu Aug 3 14:58:42 2017 grep httpd 21734 Thu Aug 3 11:17:55 2017 /usr/sbin/httpd 38742 Thu Aug 3 12:10:51 2017 /usr/sbin/httpd 42259 Sun Jul 30 04:29:09 2017 /usr/sbin/httpd 64817 Thu Aug 3 13:32:34 2017 /usr/sbin/httpd
可以看到,这些文件不是按启动时间排序,而是按进程 ID 排序。
概括
有很多方法可以使用 ps 命令
来检查操作期间正在运行的进程它还有很多其他选项可以指定,因此尝试以
不同于常规的方式使用它们会很有意思。
如果您觉得这篇文章有用,请点击【点赞】!
1