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

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

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

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

service --status-all 

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

对于Ubuntu(12.04检查)

你可以得到所有服务的列表,并用'grep'按颜色select一个:

 sudo service --status-all | grep postgres 

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

 sudo service postgresql status 

也许你想要的是ps命令;

 ps -ef 

将显示所有进程正在运行。 那么如果你有一个你正在寻找什么的想法使用grep来过滤;

 ps -ef | grep postgres 

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

 sudo service --status-all 

要获得暴发作业列表,请运行以下命令:

 sudo initctl list 

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

 ps aux 

要检查您自己的服务:

 ps aux | grep postgres 

有一个简单的方法来validation服务是否正在运行

 systemctl status service_name 

尝试:

 systemctl status postgres 

最好的方法是在terminal中使用nmap工具。 nmap是一个有用的工具,它分析一个up系统,使用它的IP Address ,然后显示所有激活的networkingservices

打开terminal并使用这个例子:

 ~$ nmap 192.168.1.3/24 Starting Nmap 5.21 ( http://nmap.org ) at 2016-05-16 22:49 IRDT Nmap scan report for 192.168.1.3 Host is up (0.00020s latency). Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 23/tcp open telnet 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp open ms-term-serv 3689/tcp open rendezvous 

肮脏的方式find正在运行的服务。 (有时候这是不准确的,因为一些自定义脚本没有| status |选项)

 [root@server ~]# for qw in `ls /etc/init.d/*`; do $qw status | grep -i running; done auditd (pid 1089) is running... crond (pid 1296) is running... fail2ban-server (pid 1309) is running... httpd (pid 7895) is running... messagebus (pid 1145) is running... mysqld (pid 1994) is running... master (pid 1272) is running... radiusd (pid 1712) is running... redis-server (pid 1133) is running... rsyslogd (pid 1109) is running... openssh-daemon (pid 7040) is running...