Answers:
从ps
手册页:
-e选择所有进程。与-A相同。
这样,ps -e
将显示所有进程。“给我一切”的常用选项是ps -ely
or ps aux
,后者是BSD样式。通常,人们会将此输出通过管道传递grep
给搜索过程,如xenoterracide的回答。为了避免grep
在输出中也看到自己,您经常会看到类似以下内容:
ps -ef | grep [f]oo
foo是您要查找的进程名称。
但是,如果您正在寻找特定的过程,建议您使用该pgrep
命令(如果可用)。我相信它可以在Ubuntu Server上使用。使用pgrep
意味着您避免了上述竞争条件。它还提供了一些其他功能,这些功能需要越来越复杂的grep
技巧才能复制。语法很简单:
pgrep foo
foo是您正在寻找的过程。默认情况下,如果找到进程,它将仅输出该进程的进程ID(PID)。有关man pgrep
其他输出选项,请参见。我发现以下页面非常有帮助:
你有尝试过ps aux | grep postgres
吗?如果postgres正在运行,它确实应该显示出来。如果没有,您怎么知道postgres正在运行?
(注意:这是一个普遍的误解,ps -aux
但这是不正确的)
ps aux
效果更好,它显示了大约70个过程,而ps
仅显示了两个。我知道PostgreSQL正在运行,因为我看到它是在启动时启动的,而在关机时停止了。
pgrep
一个好处,就是永远不会ps aux | grep postgres
在进程列表中捕获命令本身并输出它
ps
不知道标志的情况下使用。我aux
总是向它扔;我不知道各个旗帜实际上控制着什么