检查特定服务是否在Ubuntu上运行

abc*_*bcd 240 linux postgresql service ubuntu-12.04

我不知道服务的名称,但想通过检查其状态来停止服务.例如,如果我想检查PostgreSQL服务是否正在运行,但我不知道该服务的名称,那么我该如何检查其状态?

如果知道服务名称,我知道检查状态的命令.

小智 418

我没有Ubuntu盒子,但在Red Hat Linux上,您可以通过运行以下命令查看所有正在运行的服务:

service --status-all
Run Code Online (Sandbox Code Playgroud)

在列表中+指示服务正在运行,-表示服务未运行,?表示无法确定服务状态.

  • "+"开始" - "停止"?" 未知[来源](http://ubuntuforums.org/showthread.php?t=1574977) (88认同)
  • 知道为什么一个服务标有`[ - ] {name}`但是`sudo service {name} status`显示为运行? (14认同)
  • 我可以确认该命令在Ubuntu中也能正常工作. (8认同)
  • 您可能也希望运行```sudo initctl list```,如@linuxnewbee之后提到的那样. (6认同)
  • 谢谢.文档没有说明每个服务旁边的符号是什么意思.我猜"+"表示它正在运行而" - "表示它不是......那么就是"?" 旁边很多.+意味着跑? (3认同)

小智 71

对于Ubuntu(用12.04检查)

您可以获取所有服务的列表,并通过颜色选择其中一个'grep':

sudo service --status-all | grep postgres
Run Code Online (Sandbox Code Playgroud)

或者,如果您知道正确的服务名称,您可以使用其他方式:

sudo service postgresql status
Run Code Online (Sandbox Code Playgroud)

  • 我没有看到grep有任何影响(也使用Ubuntu 12.04). (4认同)
  • grep的正确方法是:`sudo service --status-all 2>&1 | grep postgres` (2认同)

Mik*_*uch 38

也许你想要的是ps命令;

ps -ef
Run Code Online (Sandbox Code Playgroud)

将显示所有正在运行的进程.然后,如果您对要查找的内容有所了解,请使用grep进行过滤;

ps -ef | grep postgres
Run Code Online (Sandbox Code Playgroud)

  • 有时,进程名称与服务名称不同。 (2认同)

lin*_*bee 22

如果运行以下命令,您将获得服务列表:

sudo service --status-all
Run Code Online (Sandbox Code Playgroud)

要获取upstart作业列表,请运行以下命令:

sudo initctl list
Run Code Online (Sandbox Code Playgroud)


Ang*_*gel 13

有一种简单的方法可以验证服务是否正在运行

systemctl status service_name
Run Code Online (Sandbox Code Playgroud)

尝试:

systemctl status postgresql
Run Code Online (Sandbox Code Playgroud)


Ame*_*iye 6

您可以使用以下命令检查所有服务的列表.

ps aux 
Run Code Online (Sandbox Code Playgroud)

检查您自己的服务:

ps aux | grep postgres
Run Code Online (Sandbox Code Playgroud)