Cuando necesite solucionar problemas de un servicio de red, el primer paso es asegurarse de que el servicio se esté ejecutando.
Si el servicio tiene instalado un script de inicialización (init), puede usar el service
Comando para iniciar, detener y comprobar el estado del servicio. Este comando hace referencia a un servicio utilizando su secuencia de comandos de inicio, que se almacena en el /etc/init.d
directorio para distribuciones basadas en Debian® y el etc/rc.d/init.d
directorio para distribuciones basadas en Red Hat®.
Si no sabe el nombre que usa el sistema para un servicio, verifique cualquiera de los directorios anteriores usando el ls
comando seguido del nombre del directorio. Algunos nombres varían dependiendo de su distribución. Por ejemplo, Apache® es httpd
en CentOS® y apache2
en el sistema operativo Ubuntu®.
Nota :Muchas distribuciones de Linux® más nuevas usan systemd
en lugar de netstat
para comprobar los servicios. Si está utilizando systemd
, reemplace allservice <service-name> <status>
comandos con systemct1 <status> <service-name>
.Para más información sobre systemct1
comandos, consulte Fedora™SysVinit to Systemd Cheatsheet.
Consulte el estado del servicio
Un servicio puede tener cualquiera de los siguientes estados:
start
:El servicio ha comenzado.stop
:El servicio ha dejado de ejecutarse.restart
:El servicio se está reiniciando y comenzará después de que se complete el proceso.
El siguiente ejemplo muestra cómo verificar el estado de httpd
en CentOS mediante el service
comando:
$ sudo service httpd status
httpd is stopped
Iniciar el servicio
Si un servicio no se está ejecutando, puede usar el service
Comando para iniciarlo. El siguiente ejemplo inicia el httpd
servicio:
$ sudo service httpd start
Starting httpd: [ OK ]
Si la aplicación no se puede iniciar, el sistema informa la falla y generalmente muestra un mensaje que indica la causa del problema.
$ 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]
Utilice netstat para encontrar conflictos de puertos
En el ejemplo anterior, httpd
no se puede iniciar porque algo ya está escuchando en el puerto. Para averiguar qué está escuchando, puede ejecutar netstat
comando.
Ejecute el siguiente comando para mostrar una lista de programas de escucha y los puertos que están usando:
# 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
El resultado muestra que nc
programa (que aparece en el Program name
columna) está escuchando en el puerto 80 (que aparece en la Local Address
columna). Detener este programa debería habilitar httpd
para ser iniciado.
Nota :Para más información sobre netstat
comando, consulte Comprobar puertos de escucha con netstat.
Consultar estado de xinetd
Si el servicio no se está ejecutando, es posible que se deba a que un superservidor, como un demonio de servicio de Internet extendido (xinetd
) se utiliza para iniciar el programa cuando se recibe una conexión. Si este es el caso, iniciar el servicio podría haber resuelto el problema. Ejecute el siguiente comando para verificar que se resuelva el problema:
$ sudo service xinetd status
xinetd (pid 8795) is running...
Comprobar registros
Si no puede iniciar su servicio, revise sus registros para ver si contienen información sobre el problema.
Pasos siguientes
Una vez que esté seguro de que la aplicación se está ejecutando, verifique los recursos del servidor para verificar cuánto consume su aplicación.