,带20个示例监控Linux系统是任何Linux用户或系统管理员需要全天候执行的最典型任务之一,以保持系统平稳运行并避免使用瓶颈。Linux使用一些内置工具来帮助您监控系统。其中之一是PS(进程状态)命令,它专门监视正在运行的进程和其他与进程相关的指标,例如cpu和内存利用率。PS命令读取基于RAM或虚拟文件系统的/proc文件系统。在本指南中,我们将深入探讨20个最常用的ps命令。(1)打印shell中的进程ps命令是linux中最简单的形式,它列出了当前shell中正在运行的进程。[linuxtechi@webserver~]$psPIDTTYTIMECMD1437pts/000:00:00bash1465pts/000:00:00ps[linuxtechi@webserver~]$让我们定义几个术语:PID:这是ProcessID.TTY:这是指启动并控制进程的终端。TIME:这是进程运行的时间/累计时间。CMD:启动进程的命令的名称。(2)column列出与终端关联的进程这与在shell中列出进程非常相似。要列出与当前运行的终端关联的进程,请执行命令[linuxtechi@webserver~]$ps-TPIDSPIDTTYTIMECMD14371437pts/000:00:00bash1335713357pts/000:00:00ps[linuxtechi@webserver~]$(3)显示系统上所有正在运行的进程要获得Linux系统上所有正在运行的进程的概览,请使用-A选项[linuxtechi@webserver~]$ps-A您也可以使用-e选项,仍然得到类似的结果。[linuxtechi@webserver~]$ps-e(4)以BSD格式显示输出需要以BSD格式列出进程,使用这个命令$ps-aux让我们来分析这个命令:-a选项指示ps从所有用户显示,但是这不包括与特定终端关联的进程。-u选项表示一种面向用户的格式,它提供有关正在运行的进程的更多详细信息。-x选项列出通常在系统启动时启动的进程,以及后台进程。术语介绍:USER——运行进程的用户PID——进程号%CPU——CPU使用百分比%MEM——物理内存占用百分比VSZ——每个进程的虚拟内存大小,单位为千字节RSS——物理内存使用大小STAT——进程状态码S(sleeping),Z(zombie)和R(Running)START-进程开始运行的时间(5)以UNIX格式显示输出如果要以UNIX格式显示输出,使用-ef选项结合执行PS命令[linuxtechi@webserver~]$ps-ef-e选项告诉ps命令列出所有进程-f(完整格式)选项指示ps命令列出进程的详细信息术语介绍:PPID:父进程IDC:进程的CPU使用百分比STIME:命令开始的时间,相当于START(6)以用户自定义格式显示输出在用户自定义格式输出中,您可以决定显示哪些列。-o选项确定运行ps命令时将显示哪些列。在下面的示例中,仅显示了PID和START列。请务必注意,列选项在ps命令中以小写形式传递。[linuxtechi@webserver~]$ps-efopid,startPIDSTARTED143721:55:281363201:41:16[linuxtechi@webserver~]$(7)显示用户当前运行的进程有时你可能希望找出进程与某个用户关联,因此要实现此目的,请使用-u选项,如图所示$ps-uuser或$ps-uuid例如,要查看与Linuxtechi用户关联的进程,运行命令$ps-ulinuxtechi也可以使用用户的uid(用户ID)。您可以通过运行以下命令获取用户ID$iduser[linuxtechi@webserver~]$idlinuxtechiuid=1000(linuxtechi)gid=1000(linuxtechi)groups=1000(linuxtechi),10(wheel)[linuxtechi@webserver~]$从上面的输出中,我们可以清楚地看到用户linuxtechi的uid是1000,然后可以使用ps命令和uid来查找与该用户关联的进程。$ps-u1000对于root用户,执行这个命令$ps-uroot同样,你可以使用root用户的uid(值0)来查看$ps-u0(8)showgroupprocesseslistgroupprocesseslike列出用户进程。您可以使用ps命令通过指定组ID或组名来列出组的进程。$ps-fG例如,要显示与apache组关联的进程,请运行命令$ps-fGapache或者,您可以传递组ID(GID)而不是组名。您可以从/etc/group文件中获取GID。例如,在此示例中,Apache的组ID为48。因此,与其指定组名apache,不如直接指定GID号。$ps-fG48(9)使用PID和PPID显示进程Linux进程也可以使用PID(进程ID)和PPID(父进程ID)显示。PPID是指进程的父进程的PID。要按PID列出进程,请使用命令$ps-fpPID例如,要列出与PID1286关联的进程,可以运行以下命令[linuxtechi@webserver~]$ps-fp1286UIDPIDPPIDCSTIMETTYTIMECMDpostfix12861285003:49?00:00:00pickup-l-tunix-u[linuxtechi@webserver~]$要按PPID列出进程,请运行$ps-f–ppid例如,要列出PPID31903拥有的进程,请运行Forexample,listprocessesownedbyPPID31903$ps-f--ppid31903(10)使用进程名查找PID在大多数情况下,我们通常不知道进程名的PID。为此使用-C选项$ps-C[linuxtechi@webserver~]$ps-CfirefoxPIDTTYTIMECMD1446tty200:00:04firefox[linuxtechi@webserver~]$(11)使用TTY显示进程如果您希望通过tty值过滤进程,请使用-t标志。例如,要显示附加到tty1的进程,请运行ps命令,如下所示:例如,要显示附加到tty1的进程$ps-fttty1(12)打印进程树进程树显示进程在Linux系统中是如何链接的。没有父进程的进程通过init或systemd链接到系统。打印要求您使用以下格式:$ps-e--forest(13)按线程过滤进程要使用进程线程过滤进程,请使用-L标志,如下所示$ps-L1446(14)实时进程监控可以使用watch实用程序来监控进程静态信息。输出每秒更新一次,如下所示$watch-n1'ps-eopid,ppid,cmd,%mem,%cpu--sort=-%cpu|head'(15)解决Linux机器上的性能问题当你的系统缓慢或过载时,你可以通过topCPU和内存使用率过滤进程执行以下ps命令列出占用高内存的top进程$ps-eopid,ppid,命令,%mem,%cpu--sort=-%mem|head执行以下ps命令列出占用高cpu的顶级进程$ps-eopid,ppid,cmd,%mem,%cpu--sort=-%cpu|head以下是我系统上的ps命令示例输出(16)终止无响应的进程ps命令可让您终止无响应的应用程序或任何占用CPU和RAM的进程。为此,您需要使用命令$ps-A|查找特定应用程序的PID。grep-istress一旦找到进程的PID,就可以使用kill命令终止它,示例如下所示$kill-925832584(17)columns您可以使用此语法列出与该进程相关的所有pidsprocess$ps-C-opid=例如找出与httpdweb服务器运行相关的pid$ps-Chttpd-opid=(18)显示一个进程运行了多长时间要显示进程运行了多长时间,请运行以下命令$ps-eocomm,etime,user使用下面的ps命令找出特定进程运行了多长时间$ps-oetime-p假设我们想知道MySQL进程运行了多长时间[linuxtechi@webserver~]$ps-Cmysqld-opid=3807[linuxtechi@webserver~]$[linuxtechi@webserver~]$ps-oetime-p3807ELAPSED01:13:56[linuxtechi@webserver~]$(19)列出一个进程的子进程要打印或列出一个进程的子进程,在下面的语法中使用-C标志$ps-C对于例如,要列出与httpd进程关联的子进程,请运行[linuxtechi@webserver~]$ps-ChttpdPIDTTYTIMECMD31911?00:00:00httpd31918?00:00:00httpd31919?00:00:00httpd31920?00:00:01httpd31921?00:00:01httpd31922?00:00:01httpd[linuxtechi@webserver~]$(20)使用grep过滤ps命令的输出以便运行ps命令以获得特定结果,您可以将输出通过管道传递给grep实用程序并提供例如,要搜索或缩小到php进程,您可以运行此命令$ps-ef|grepphp我的开源项目course-tencent-cloud(酷瓜云课堂-gitee仓库)course-tencent-cloud(酷瓜云课堂-github仓库)