Como verificar se um serviço específico está sendo executado no Ubuntu


253

Não sei o nome do serviço, mas gostaria de interromper o serviço verificando seu status.

Por exemplo, se eu quiser verificar se o serviço PostgreSQL está em execução ou não, mas não sei o nome do serviço, como posso verificar seu status?

Conheço o comando para verificar o status se o nome do serviço for conhecido.


1
Então, como você sabe que é o serviço correto se não sabe o nome? Posso adicionar muitos scripts de inicialização ao /etc/init.d/ com nomes contendo palavras-chave postgres (embora isso não faça sentido!) E como você pode saber que é o serviço que você gostaria de parar? Plz adicionar alguma explicação para o seu contexto
Stefan

1
@Stefan como eu sou novo para comandos linux Eu gostaria de saber se eu não sei o nome do serviço correto, mas parcialmente usando parte do nome do serviço ou como nome de I pode encontrar o mesmo
ABCD

1
Você pode usar as listas de serviço ou ps -ef e analisar as saídas. De qualquer forma, não acho que seja uma boa idéia interromper os serviços que você acha que devem parar, mas não tem certeza . Portanto, você deve fazer uma lista com os nomes de serviço reais em execução na máquina que deseja parar. Se você considerar parar apenas os serviços "padrão" como postgres, mysql, http, poderá descobrir os nomes dos serviços realmente fáceis.
Stefan

Verifique o grupo askubuntu: askubuntu.com/questions/407075/…
svassr

Respostas:


438

Eu não tenho uma caixa Ubuntu, mas no Red Hat Linux você pode ver todos os serviços em execução executando o seguinte comando:

service --status-all

Na lista, +indica que o serviço está em execução, -indica que o serviço não está em execução, ?indica que o estado do serviço não pode ser determinado.


3
Obrigado. A documentação não diz o que significam os símbolos ao lado de cada serviço. Eu acho que "+" significa que está em execução e "-" significa que não está ... então há o "?" próximo a muitos. + significa correr?
Oscar

89
"+" iniciado "-" parado "?" fonte
gkiko 12/03/14

Como eu poderia fazer isso no RedHat (centos)
PolarisUser

14
Alguma idéia de por que um serviço está marcado com, [-] {name}mas sudo service {name} statusmostra como em execução?
Mark Murphy

6
Você também pode executar sudo initctl list, como mencionado por @linuxnewbee aqui depois.
svassr

79

Para Ubuntu (verificado com 12.04)

Você pode obter uma lista de todos os serviços e selecionar por cor um deles com 'grep':

sudo service --status-all | grep postgres

Ou você pode usar outra maneira se souber o nome correto do serviço:

sudo service postgresql status

4
Não vejo o grep tendo nenhum efeito (também usando o Ubuntu 12.04).
Notapatch 27/03

2
A maneira correta de grep é:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk

sudo service x statusrelatórios Active: inactive (dead)aqui para um serviço em execução, Ubuntu 15.04 (Vivid)
Dinei

39

Talvez o que você queira seja o comando ps;

ps -ef

irá mostrar todos os processos em execução. Então, se você tem uma idéia do que está procurando, use grep para filtrar;

ps -ef | grep postgres

2
Às vezes, o nome do processo não é o mesmo que o nome do serviço.
Francisco Quintero

Provavelmente é melhor pgrep -a postgres. Isso também evita aqueles irritantes grep --color=auto needle.
Pablo A


16

Existe uma maneira simples de verificar se um serviço está sendo executado

systemctl status service_name

Experimente o PostgreSQL:

systemctl status postgresql

6

Você pode usar o comando abaixo para verificar a lista de todos os serviços.

ps aux 

Para verificar seu próprio serviço:

ps aux | grep postgres

Esta é idêntica à resposta acima
Pablo A

2

a melhor maneira é usar a nmapferramenta no terminal. O nmap é uma ferramenta útil que analisa um sistema IP Addressativo , usa-o e mostra toda a rede ativada services.

abra terminale use este exemplo:

~$ 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
Isso só funciona se for um serviço de rede, obviamente.
Molomby 22/02

2

corre

ps -ef | grep nome relacionado ao processo

O comando acima fornecerá todos os detalhes, como pid, hora de início do processo.

como se você quiser que todo processo realizado em java dê java ou se você tiver um nome de processo, coloque o nome


Isso funciona até o nome do serviço ter 8 caracteres ou menos. Caso contrário, a listagem será truncada.
Tomas Kubes 09/09/19

0

Maneira suja de encontrar serviços em execução. (em algum momento não é preciso porque algum script personalizado não possui a opção | 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...

0

Para centos, o comando abaixo funcionou para mim (:

locate postgres | grep service

Resultado:

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

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

sudo systemctl status postgresql-9.3.service

0

Para verificar o status de um serviço no sistema operacional linux:

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

Para parar ou iniciar o serviço

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

Para obter a lista de todos os serviços junto com o PID:

sudo service --status-all

Você pode usar systemctl em vez de chamar diretamente o serviço:

systemctl status/start/stop {service_name}

0

para Centos 6.10: /sbin/service serviceNAME status

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

funciona para todos eles: service --status-all


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.