Cómo verificar si un servicio en particular se está ejecutando en Ubuntu


253

No sé el nombre del servicio, pero me gustaría detenerlo verificando su estado.

Por ejemplo, si quiero verificar si el servicio PostgreSQL se está ejecutando o no, pero no sé el nombre del servicio, ¿cómo podría verificar su estado?

Conozco el comando para verificar el estado si se conoce el nombre del servicio.


1
Entonces, ¿cómo sabes que es el servicio correcto si no sabes su nombre? Puedo agregar muchos scripts de inicio a /etc/init.d/ con nombres que contengan palabras clave postgres (¡aunque esto no tendría sentido!) Y ¿cómo puede saber que es el servicio que desea detener? Por favor, agregue alguna explicación para su contexto
Stefan

1
@Stefan, ya que soy nuevo en los comandos de Linux, me gustaría saber si no conozco el nombre correcto del servicio, pero si uso parcialmente parte del nombre del servicio o me gusta, puedo encontrar el mismo
abcd

1
Puede usar las listas de servicios o ps -ef y analizar las salidas. De todos modos, no creo que sea una buena idea detener los servicios que cree que son los que deben detenerse, pero no estoy seguro . Por lo tanto, debe hacer una lista con los nombres de servicio reales que se ejecutan en la máquina que desea detener. Si considera detener solo los servicios "estándar" como postgres, mysql, http, puede encontrar los nombres de los servicios realmente fáciles.
Stefan

Compruebe el grupo askubuntu: askubuntu.com/questions/407075/…
svassr

Respuestas:


438

No tengo un cuadro de Ubuntu, pero en Red Hat Linux puede ver todos los servicios en ejecución ejecutando el siguiente comando:

service --status-all

En la lista, +indica que el servicio se está ejecutando, -indica que el servicio no se está ejecutando, ?indica que no se puede determinar el estado del servicio.


3
Gracias. La documentación no dice qué significan los símbolos al lado de cada servicio. Supongo que "+" significa que se está ejecutando y "-" significa que no lo está ... luego está el "?" al lado de muchos + significa correr?
Oscar

89
"+" comenzó "-" se detuvo "?" fuente
gkiko

¿Cómo haría esto en redhat (centos)
PolarisUser

14
¿Alguna idea de por qué un servicio está marcado [-] {name}pero se sudo service {name} statusmuestra como en ejecución?
Mark Murphy

66
Es posible que desee ejecutar sudo initctl listtambién, como lo menciona @linuxnewbee aquí después.
svassr

79

Para Ubuntu (marcado con 12.04)

Puede obtener una lista de todos los servicios y seleccionar por color uno de ellos con 'grep':

sudo service --status-all | grep postgres

O puede usar otra forma si conoce el nombre correcto del servicio:

sudo service postgresql status

44
No veo que el grep tenga ningún efecto (también usando Ubuntu 12.04).
notapatch

2
La forma correcta de grep es:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk

sudo service x statusinforma Active: inactive (dead)aquí para un servicio en ejecución, Ubuntu 15.04 (Vivid)
Dinei

39

Quizás lo que quieres es el comando ps;

ps -ef

le mostrará todos los procesos en ejecución. Entonces, si tiene una idea de lo que está buscando, use grep para filtrar;

ps -ef | grep postgres

2
A veces, el nombre del proceso no es el mismo que el nombre del servicio.
Francisco Quintero

Probablemente mejor es pgrep -a postgres. Esto también evita los molestos grep --color=auto needle.
Pablo A


16

Hay una manera simple de verificar si un servicio se está ejecutando

systemctl status service_name

Prueba PostgreSQL:

systemctl status postgresql


2

La mejor manera es usar la nmapherramienta en la terminal. nmap es una herramienta útil que analiza un sistema activo, utilizándolo IP Address, luego muestra toda la red activaservices .

abrir terminaly usar este ejemplo:

~$ 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

1
Esto solo funciona si es un servicio de red, obviamente.
Molomby

2

correr

ps -ef | grep relacionado con el nombre del proceso

El comando anterior le dará todos los detalles como pid, hora de inicio sobre el proceso.

como si quieres que todo el proceso de Java sea real, dale Java o si tienes el nombre del proceso, coloca el nombre


Esto funciona hasta que el nombre del servicio sea de 8 caracteres o menos. De lo contrario, el listado se trunca.
Tomas Kubes el

0

Manera sucia de encontrar servicios en ejecución. (a veces no es preciso porque algunas secuencias de comandos personalizadas no tienen | estado | opción)

[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...

0

Para centos, el siguiente comando funcionó para mí (:

locate postgres | grep service

Salida:

/usr/lib/firewalld/services/postgresql.xml

/ usr / lib / systemd / system / postgresql-9.3.service

sudo systemctl status postgresql-9.3.service

0

Para verificar el estado de un servicio en el sistema operativo Linux:

//in case of super user(admin) requires    
sudo service {service_name} status 
// in case of normal user
service {service_name} status 

Para detener o iniciar el servicio

// in case of admin requires
sudo service {service_name} start/stop
// in case of normal user
service {service_name} start/stop 

Para obtener la lista de todos los servicios junto con PID:

sudo service --status-all

Puede usar systemctl en lugar de llamar directamente al servicio:

systemctl status/start/stop {service_name}

0

para Centos 6.10: /sbin/service serviceNAME status

para Centos 7.6 y ubuntu 18.04: systemctl status NAME.service

funciona para todos ellos: service --status-all


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.