Comment vérifier si un service particulier fonctionne sur Ubuntu


253

Je ne connais pas le nom du service, mais je voudrais arrêter le service en vérifiant son statut.

Par exemple, si je veux vérifier si le service PostgreSQL est en cours d'exécution ou non, mais je ne connais pas le nom du service, comment puis-je vérifier son état?

Je connais la commande pour vérifier l'état si le nom du service est connu.


1
Alors, comment savez-vous que c'est le bon service si vous ne connaissez pas son nom? Je peux ajouter de nombreux scripts d'initialisation à /etc/init.d/ avec des noms contenant des mots clés postgres (bien que cela serait insensé!) Et comment pouvez-vous savoir que c'est le service que vous souhaitez arrêter? Veuillez ajouter quelques explications pour votre contexte
Stefan

1
@Stefan comme je suis nouveau dans les commandes linux, je voudrais savoir si je ne connais pas le nom correct du service, mais en utilisant partiellement une partie du nom du service ou un nom similaire, puis-je trouver le même
abcd

1
Vous pouvez utiliser les listes de services ou ps -ef et analyser les sorties. Quoi qu'il en soit, je ne pense pas que ce soit une bonne idée d'arrêter des services que vous pensez être ceux à arrêter mais pas sûr . Par conséquent, vous devez faire une liste avec les vrais noms de service en cours d'exécution sur la machine que vous souhaitez arrêter. Si vous envisagez d'arrêter uniquement les services "standard" comme postgres, mysql, http, vous pouvez trouver les noms de service très facilement.
Stefan

Consultez le groupe askubuntu: askubuntu.com/questions/407075/…
svassr

Réponses:


438

Je n'ai pas de boîte Ubuntu, mais sur Red Hat Linux, vous pouvez voir tous les services en cours d'exécution en exécutant la commande suivante:

service --status-all

Dans la liste, +indique que le service est en cours d'exécution, -indique que le service n'est pas en cours d'exécution, ?indique que l'état du service ne peut pas être déterminé.


3
Merci. La documentation ne dit pas ce que signifient les symboles à côté de chaque service. Je suppose que "+" signifie qu'il fonctionne et "-" signifie qu'il ne l'est pas ... alors il y a le "?" à côté de beaucoup. + signifie courir?
Oscar

89
"+" commencé "-" arrêté "?" source
gkiko

Comment pourrais-je faire cela sur redhat (centos)
PolarisUser

14
Une idée pourquoi un service est marqué [-] {name}mais sudo service {name} statusapparaît comme en cours d'exécution?
Mark Murphy

6
Vous voudrez peut-être également exécuter sudo initctl list, comme mentionné par @linuxnewbee ci-dessous.
svassr

79

Pour Ubuntu (vérifié avec 12.04)

Vous pouvez obtenir la liste de tous les services et sélectionner par couleur l'un d'eux avec 'grep':

sudo service --status-all | grep postgres

Ou vous pouvez utiliser une autre méthode si vous connaissez le nom correct du service:

sudo service postgresql status

4
Je ne vois pas le grep avoir un effet (en utilisant également Ubuntu 12.04).
notapatch

2
La façon correcte de grep est:sudo service --status-all 2>&1 | grep postgres
Adam Chwedyk

sudo service x statusrapporte Active: inactive (dead)ici pour un service en cours d'exécution, Ubuntu 15.04 (Vivid)
Dinei

39

Peut-être que vous voulez la commande ps;

ps -ef

vous montrera tous les processus en cours d'exécution. Ensuite, si vous avez une idée de ce que vous recherchez, utilisez grep pour filtrer;

ps -ef | grep postgres

2
Parfois, le nom du processus n'est pas le même que le nom du service.
Francisco Quintero

C'est probablement mieux pgrep -a postgres. Cela évite également ceux ennuyeux grep --color=auto needle.
Pablo A


16

Il existe un moyen simple de vérifier si un service est en cours d'exécution

systemctl status service_name

Essayez PostgreSQL:

systemctl status postgresql

6

Vous pouvez utiliser la commande ci-dessous pour vérifier la liste de tous les services.

ps aux 

Pour vérifier votre propre service:

ps aux | grep postgres

Ceci est identique à la réponse ci-dessus
Pablo A

2

la meilleure façon est d'utiliser l' nmapoutil dans le terminal. nmap est un outil utile qui analyse un système en place, en l'utilisant IP Address, puis affiche tous les réseaux activés services.

ouvrir terminalet utiliser cet exemple:

~$ 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
Cela ne fonctionne que si c'est un service réseau, évidemment.
Molomby

2

courir

ps -ef | grep name-related-to-process

la commande ci-dessus donnera tous les détails comme pid, l'heure de début du processus.

comme si vous voulez que tous les processus java realted donnent java ou si vous avez le nom du processus placez le nom


Cela fonctionne jusqu'à ce que le nom du service soit de 8 caractères ou moins. Sinon, la liste est tronquée.
Tomas Kubes

0

Façon sale de trouver des services en cours d'exécution. (parfois, il n'est pas précis car certains scripts personnalisés n'ont pas d'option | 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

Pour centos, la commande ci-dessous a fonctionné pour moi (:

locate postgres | grep service

Production:

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

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

sudo systemctl status postgresql-9.3.service

0

Pour vérifier l'état d'un service sur le système d'exploitation Linux:

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

Pour arrêter ou démarrer le service

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

Pour obtenir la liste de tous les services avec PID:

sudo service --status-all

Vous pouvez utiliser systemctl au lieu d'appeler directement le service:

systemctl status/start/stop {service_name}

0

pour Centos 6.10: /sbin/service serviceNAME status

pour Centos 7.6 et ubuntu 18.04: systemctl status NAME.service

travaille pour chacun d'eux: service --status-all


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.