什么是ps命令?Linux中的ps命令可以显示系统中运行的进程信息,比如进程ID等,是一个使用非常广泛的工具,大约有80个选项,可见其复杂性。本文将介绍一些最常用的ps命令示例。Linux中ps命令的基本用法ps命令不带任何选项,显示当前shell中正在运行的进程:ps下面是输出,我在后台发送了gedit命令,所以它显示了三个进程,否则你通常只是你会看到ps和bash。PIDTTYTIMECMD503pts/000:00:00gedit2053pts/000:00:00ps31585pts/000:00:00bash这里:PID是唯一的进程ID过程;TTY是用户登录终端类型。pts表示伪终端;TIME显示进程已经运行的时间;CMD是用于启动进程的命令。当然,这个例子并没有提供任何真正有用的信息,所以让我们看一些ps命令的更实用的例子。1.查看所有正在运行的进程如果你想查看你正在运行的所有进程,你可以使用选项x:ps-xx选项将显示所有进程,即使它们没有与当前tty(终端类型)相关联或者它们确实没有控制终端(例如守护进程)。选项前面的破折号-是可选的,但在Linux中一般按约定使用,所以最好放一个破折号-。这是一些输出(我省略了一些,因为它总共有数百行):PIDTTYSTATTIMECOMMAND503pts/0Sl0:00gedit2245?S0:00/usr/bin/ssh-agent-D-a/run/user/1000/keyring/.ssh3039?Ss0:00/lib/systemd/systemd--user3040?S0:00(sd-pam)3054?SLl0:01/usr/bin/gnome-keyring-daemon--daemonize--login3059tty2Ssl+0:00/usr/lib/gdm3/gdm-x-session--run-scriptenv上面输出中的STAT表示进程状态码(ProcessStateCode),你可以在psman手册中查看它的详细信息。但是,我们很少看到ps只使用-x选项,通常是和-u选项一起使用:ps-ux使用-u选项,可以看到每个进程的详细信息:USERPID%CPU%MEMVSZRSSTTYSTAT开始时间COMMANDgliu5030.00.468158037516pts/0Sl18:090:00geditgliu22450.00.0113001496?S18:370:00/usr/bin/ssh-agent-D-a/run/user/1000/keyring/.sshgliu30390.00.0773443508?Ss10:370:00/lib/systemd/systemd--usergliu30400.00.0114632360?S10:370:00(sd-pam)gliu30540.00.151710411512?SLl10:370:01/usr/bin/gnome-keyring-daemon在上面的输出中,可以看到每个进程的用户名、CPU消耗和内存使用情况。RSS显示进程当前在RAM中有多少内存,而VSZ显示进程总共有多少虚拟内存。2、使用psaux命令查看所有正在运行的进程你可能经常在Linux教程或文档中看到px-aux或pxaux等例子。使用-a选项可以看到Linux系统中所有用户的运行进程。ps-aux的输出与ps-ux相同,但它还包括其他用户的进程。-u选项允许您查看进程所属的用户。3、使用ps-ef查看正在运行的进程除了ps-aux,还可以使用-e选项列出所有正在运行的进程,然后结合-f选项得到完整的运行进程列表:ps-ef注意这里e前面的破折号-非常重要,没有它会显示不同的结果。您还可以组合H选项以在线程视图中查看所有进程,以及在其父进程下的子进程:ps-efH4。查看特定用户的进程要查看为用户运行的进程,请使用-U选项后跟用户名:ps-Uuser_name例如,要查看root用户运行的进程:ps-UrootPIDTTYTIME命令1?00:00:41系统2?00:00:00kthreadd3?00:00:00rcu_gp4?00:00:00rcu_par_gp8?00:00:00mm_percpu_wq9?00:00:03ksoftirqd/010?00:01:22rcu_sched5.通过提供组名或组id查看该组运行的所有进程,按组而不是用户对运行进程进行分类:ps-Ggroup_name_or_id也可以结合f选项得到完整列表,你可以自己试试看输出。6.获取程序的所有事件和PIDps命令的一个基本用途是获取正在运行的程序的进程ID(PID)。比如当你想结束一个程序时,你会搜索所有的程序事件,得到它们的PID,然后使用kill命令结束进程。ps-Cprogram__name比如我想查询apt包管理器的运行实例:ps-CaptPIDTTYTIMECMD11425pts/100:00:00apt另外,也可以用grep得到类似的结果:ps辅助|grepprogram_name7.获取相关PID的进程信息如果你有一个PID,但不知道它属于哪个进程,可以使用ps命令查询进程信息:ps-pN多个PID可以用逗号隔开,然后查询多个进程信息:ps-pN1,N2,N3正如本文开头所述,ps是一个复杂且使用广泛的命令,本文只介绍一些最常用的例子。有关它的更多信息,您可以查看手册页。
