Lorsque vous devez dépanner un service réseau, la première étape consiste à vous assurer que le service est en cours d'exécution.
Si le service a un script d'initialisation (init) installé, vous pouvez utiliser le service
commande pour démarrer, arrêter et vérifier l'état du service. Cette commande fait référence à un service en utilisant son script d'initialisation, qui est stocké dans le /etc/init.d
répertoire pour les distributions basées sur Debian® et le etc/rc.d/init.d
répertoire pour les distributions basées sur Red Hat®.
Si vous ne connaissez pas le nom que le système utilise pour un service, vérifiez l'un des répertoires précédents en utilisant le ls
commande suivie du nom du répertoire. Certains noms varient en fonction de votre distribution. Par exemple, Apache® est httpd
sur CentOS® et apache2
sur le système d'exploitation Ubuntu®.
Remarque :De nombreuses distributions Linux® plus récentes utilisent systemd
au lieu de netstat
pour vérifier les services. Si vous utilisez systemd
, remplacez tous les service <service-name> <status>
commandes avec systemct1 <status> <service-name>
.Pour plus d'informations sur systemct1
commandes, consultez la feuille de triche Fedora™SysVinit to Systemd.
Vérifier l'état du service
Un service peut avoir l'un des statuts suivants :
start
:Le service a démarré.stop
:Le service a cessé de fonctionner.restart
:Le service redémarre et démarrera une fois le processus terminé.
L'exemple suivant montre comment vérifier l'état de httpd
sur CentOSen utilisant le service
commande :
$ sudo service httpd status
httpd is stopped
Démarrer le service
Si un service ne fonctionne pas, vous pouvez utiliser le service
commande pour le démarrer. L'exemple suivant démarre le httpd
service :
$ sudo service httpd start
Starting httpd: [ OK ]
Si l'application ne peut pas démarrer, le système signale l'échec et affiche généralement un message indiquant la cause du problème.
$ sudo service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]
Utiliser netstat pour trouver les conflits de ports
Dans l'exemple précédent, httpd
ne peut pas être démarré car quelque chose est déjà à l'écoute sur le port. Pour savoir ce qui écoute, vous pouvez exécuter le netstat
commande.
Exécutez la commande suivante pour afficher une liste des programmes d'écoute et des ports qu'ils utilisent :
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.176.77.113:3306 0.0.0.0:* LISTEN 28509/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2113/nc
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1115/master
tcp 0 0 :::22 :::* LISTEN 1051/sshd
La sortie montre que le nc
programme (qui apparaît dans le champ Program name
colonne) écoute sur le port 80 (qui apparaît dans l'Local Address
colonne). L'arrêt de ce programme devrait activer httpd
à démarrer.
Remarque :Pour plus d'informations sur le netstat
commande, voir Vérifier les ports d'écoute avec netstat.
Vérifier l'état de xinetd
Si le service ne fonctionne pas, c'est peut-être parce qu'un super-serveur tel qu'un démon de service Internet étendu (xinetd
) est utilisé pour lancer le programme lorsqu'une connexion est reçue. Si tel est le cas, le démarrage du service a peut-être résolu le problème. Exécutez la commande suivante pour vérifier que le problème est résolu :
$ sudo service xinetd status
xinetd (pid 8795) is running...
Vérifier les journaux
Si vous ne pouvez pas démarrer votre service, consultez vos journaux pour voir s'ils contiennent des informations sur le problème.
Étapes suivantes
Une fois que vous êtes sûr que l'application est en cours d'exécution, vérifiez les ressources du serveur pour vérifier combien votre application consomme.