如何查看正在运行的进程?


21

我使用Ubuntu Server 10.10,我想看看正在运行什么进程。我知道PostgreSQL正在我的机器上运行,但是我无法使用topps命令看到它,因此我假设它们没有显示所有正在运行的进程。难道还有其他的命令,它会显示所有正在运行的进程或有任何其他参数,我可以使用topps用于本?

Answers:


26

ps手册页:

-e选择所有进程。与-A相同。

这样,ps -e将显示所有进程。“给我一切”的常用选项是ps -elyor ps aux,后者是BSD样式。通常,人们会将此输出通过管道传递grep给搜索过程,如xenoterracide的回答。为了避免grep在输出中也看到自己,您经常会看到类似以下内容:

 ps -ef | grep [f]oo

foo是您要查找的进程名称。

但是,如果您正在寻找特定的过程,建议您使用该pgrep命令(如果可用)。我相信它可以在Ubuntu Server上使用。使用pgrep意味着您避免了上述竞争条件。它还提供了一些其他功能,这些功能需要越来越复杂的grep技巧才能复制。语法很简单:

pgrep foo

foo是您正在寻找的过程。默认情况下,如果找到进程,它将仅输出该进程的进程ID(PID)。有关man pgrep其他输出选项,请参见。我发现以下页面非常有帮助:

http://mywiki.wooledge.org/ProcessManagement


我想知道有多少人在ps不知道标志的情况下使用。我aux总是向它扔;我不知道各个旗帜实际上控制着什么
迈克尔·莫罗泽克

3

你有尝试过ps aux | grep postgres吗?如果postgres正在运行,它确实应该显示出来。如果没有,您怎么知道postgres正在运行?

(注意:这是一个普遍的误解,ps -aux但这是不正确的)


谢谢,ps aux效果更好,它显示了大约70个过程,而ps仅显示了两个。我知道PostgreSQL正在运行,因为我看到它是在启动时启动的,而在关机时停止了。
乔纳斯(Jonas)2010年

@Jonas一些初始化脚本编写得很差。不要仅仅因为他们说某件事开始和停止而相信他们。只是一些建议
xenoterracide 2010年

还有pgrep一个好处,就是永远不会ps aux | grep postgres在进程列表中捕获命令本身并输出它
Michael Mrozek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.