一、命令简介
ps
(process status)命令是Linux和Unix系统中用于查看当前系统上运行的进程的命令。它提供了关于进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、用户、CPU使用情况、内存使用情况、命令名等。
二、命令参数
下面是一些ps
命令的常用选项及其含义:
-
-A
:显示所有进程。 -
-a
:显示除会话前导进程外的所有进程。 -
-u
:按照用户过滤进程。 -
-x
:显示没有控制终端的进程。 -
-e
:显示所有进程,等同于-A
。 -
-f
:完整格式列表。 -
-j
:工作控制的格式。 -
-H
:显示进程的层次结构(树状图)。 -
-o
:自定义输出格式。
ps
命令是一个功能强大的工具,可以通过不同的选项组合来满足各种查询需求。当需要更复杂的进程信息或排序时,通常与grep
、awk
等命令结合使用。
三、命令示例
显示所有进程的完整列表:
命令
ps -ef
输出
UID PID PPID C STIME TTY TIME CMD root 1 0 0 9月20 ? 00:00:03 /sbin/init root 2 0 0 9月20 ? 00:00:00 [kthreadd] root 3 2 0 9月20 ? 00:00:00 [rcu_gp] ...
显示所有进程的详细列表,包括无控制终端的进程:
命令
ps aux
输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.5 166460 11880 ? Ss 9月20 0:03 /sbin/init root 2 0.0 0.0 0 0 ? S 9月20 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 9月20 0:00 [rcu_gp] ...
显示当前用户的所有进程:
命令
ps -u $USER
输出
PID TTY TIME CMD 9349 ? 00:00:00 systemd 9350 ? 00:00:00 (sd-pam) 9434 ? 00:00:00 sshd 9435 pts/0 00:00:00 bash 9447 pts/0 00:00:00 ps
显示特定用户的所有进程:
ps -u soulio -f
输出
UID PID PPID C STIME TTY TIME CMD soulio 9349 1 0 21:26 ? 00:00:00 /lib/systemd/systemd --user soulio 9350 9349 0 21:26 ? 00:00:00 (sd-pam) soulio 9434 9346 0 21:26 ? 00:00:00 sshd: soulio@pts/0 soulio 9435 9434 0 21:26 pts/0 00:00:00 -bash soulio 9452 9435 0 21:30 pts/0 00:00:00 ps -u soulio -f
显示所有进程的树形结构:
ps -ejH
输出
PID PGID SID TTY TIME CMD 2 0 0 ? 00:00:00 kthreadd 3 0 0 ? 00:00:00 rcu_gp 4 0 0 ? 00:00:00 rcu_par_gp 5 0 0 ? 00:00:00 slub_flushwq
显示进程的 CPU 和内存使用情况,并按 CPU 使用率降序排序:
ps -eo pid,%cpu,%mem,cmd --sort=-%cpu
输出
PID %CPU %MEM CMD 622 0.1 2.3 /usr/bin/containerd 760 0.1 4.2 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 1 0.0 0.5 /sbin/init 2 0.0 0.0 [kthreadd] 3 0.0 0.0 [rcu_gp]
显示进程的详细属性,包括线程:
ps -o pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
输出
PID TID CLS RTPRIO NI PRI PSR %CPU STAT WCHAN COMMAND 9435 9435 TS - 0 19 1 0.0 Ss do_wait bash 9456 9456 TS - 0 19 0 0.0 R+ - ps
显示进程的累计执行时间:
ps -eo pid,comm,etime
输出
PID COMMAND ELAPSED 1 systemd 3-03:29:03 2 kthreadd 3-03:29:03 3 rcu_gp 3-03:29:03
显示特定进程 ID 的进程信息:
格式
ps -p PID -f
命令
ps -p 1 -f
输出
UID PID PPID C STIME TTY TIME CMD root 1 0 0 9月20 ? 00:00:03 /sbin/init
自定义输出格式,显示进程 ID、父进程 ID、命令、内存使用百分比和 CPU 使用率:
ps -eo pid,ppid,cmd,%mem,%cpu
输出
PID PPID CMD %MEM %CPU 1 0 /sbin/init 0.5 0.0 2 0 [kthreadd] 0.0 0.0 3 2 [rcu_gp] 0.0 0.0 4 2 [rcu_par_gp] 0.0 0.0
查找特定进程名,并显示相关信息:
格式
ps -ef | grep process_name
命令
ps -ef | grep nginx
输出
root 675 1 0 9月20 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; www-data 676 675 0 9月20 ? 00:00:00 nginx: worker process www-data 677 675 0 9月20 ? 00:00:00 nginx: worker process soulio 9545 9435 0 21:58 pts/0 00:00:00 grep --color=auto nginx
显示进程及其环境变量:
进程的环境变量是指进程在执行时所能访问的一组键值对,这些变量可以影响程序的运行方式。环境变量常用于传递配置信息,如文件路径、用户信息、语言设置等。
格式
cat /proc/<PID>/environ | tr '\0' '\n'
命令
cat /proc/1/environ | tr '\0' '\n'
输出
HOME=/ init=/sbin/init NETWORK_SKIP_ENSLAVED= TERM=linux BOOT_IMAGE=/boot/vmlinuz-5.15.0-122-generic drop_caps= PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ rootmnt=/root
显示进程的虚拟内存大小、物理内存大小,单位KB:
ps -o pid,vsize,rss
输出
PID VSZ RSS 9663 13684 4732 9664 10724 4460 9856 13176 1588
显示进程的命令行参数:
ps -eo pid,args
输出
PID COMMAND 10229 ps -eo pid,args 49310 node server 94943 -bash (bash)
用户使用内存的情况
ps -eo user,rss | grep $USER | awk '{total +=$2} END {print total}'
输出
304720
这些示例展示了 ps
命令的多样性和它在进程监控和管理中的实用性。通过组合不同的选项,可以获取特定情境下所需的进程信息。
本文共 617 个字数,平均阅读时长 ≈ 2分钟
评论 (0)