Para los usuarios avanzados de Linux, iniciar, detener y reiniciar los servicios de Linux es esencial. Estas operaciones permiten a los usuarios acceder a la funcionalidad de cada servicio. Por ejemplo, para utilizar un servidor web, los usuarios deben iniciar el servicio Apache, o para utilizar una base de datos, los usuarios deben iniciar el servicio MySQL. La gestión de los servicios de Linux también es importante para la estabilidad del sistema y puede ayudar a mejorar el rendimiento del sistema.
A pesar de la creencia común, iniciar, detener y reiniciar servicios en Linux es relativamente sencillo. Trabajaremos con Linux, pero todos los comandos para iniciar, detener y reiniciar los servicios de Linux se pueden ejecutar en CentOS, Ubuntu, Redhat, Fedora, Debian y muchas otras distribuciones.
¿Cuál es la diferencia entre systemctl y los comandos de servicio?
Existen dos herramientas de administración oficiales que brindan una forma consistente de iniciar, detener, reiniciar y administrar los servicios del sistema en Linux:
Systemctl ofrece funciones más avanzadas, incluida la gestión de dependencias, habilitar/deshabilitar servicios e integración con journalctl para el registro. El servicio es más simple y se utiliza principalmente para comandos básicos de inicio, parada y estado del servicio. A menudo se utiliza con sistemas antiguos basados en SysVinit.
Cuál uses dependerá de si tu distribución usa systemd o init. La mayoría de las distribuciones modernas ahora usan systemd, por lo que systemctl es el administrador de servicios preferido. Pero algunos viejos hábitos son difíciles de erradicar, por lo que muchos administradores todavía se aferran al antiguo comando de servicio.
Afortunadamente, los desarrolladores de systemd se aseguraron de conservar el servicio y redirigirlo a systemctl, por lo que incluso en sistemas basados en systemd, el uso del servicio seguirá funcionando para tareas básicas.
Para complicar aún más las cosas, es posible que haya instalado un servicio aleatorio que no se haya actualizado ni al servicio ni a las herramientas systemctl y deba iniciarlo manualmente con /etc/rc.d (o /etc/init.d). Pero aquí buscamos las mejores prácticas, y para iniciar, detener o reiniciar aplicaciones en Linux, las mejores prácticas comienzan y terminan con systemctl.
VER: Comience a aprender a usar Linux para TI y Sysadmin con este paquete
Iniciar un servicio de Linux
Digamos que desea iniciar el servidor Apache.
Para hacer esto:
- Abra una ventana de terminal.
- Ejecute el comando
sudo systemctl start httpd
.
En este comando:
sudo
le dice a Linux que está ejecutando el comando como usuario root.systemctl
gestiona los servicios del sistema.start
le dice al comando systemctl que inicie el servicio Apache.httpd
es el nombre del servicio del servidor web Apache.
- Una vez que ejecute el comando, recibirá el siguiente mensaje:
The service httpd has started successfully.
Nota que si el servicio ya está ejecutándose verás el siguiente mensaje:
The service httpd is already running.
VER: Cómo abrir rápidamente una terminal en un directorio específico de Linux
Mensajes de error comunes
Failed to start httpd.service. Unit httpd.service not found.
Este error ocurre si el paquete del servidor web Apache no está instalado o falta el archivo de la unidad de servicio. Instale el paquete Apache usando sudo apt install apache2 (en sistemas basados en Debian) o sudo yum install httpd (en sistemas basados en Red Hat) para resolverlo.
Failed to start httpd.service. Address already in use.
Esto indica que otro proceso ya utiliza el puerto al que Apache desea conectarse (normalmente el puerto 80). Identificar el proceso conflictivo con sudo lsof -i:80
y deténgalo, o cambie la configuración del puerto en el archivo de configuración de Apache.
Detener un servicio de Linux
Para detener el servicio Apache:
- Abrir una ventana de terminal
- Ejecute el comando
sudo systemctl stop httpd
. - Ahora deberías ver el siguiente mensaje:
The service httpd has been stopped successfully.
Tenga en cuenta que si el servicio, en este caso Apache, no se estaba ejecutando, recibirá el siguiente mensaje:
Failed to stop service httpd. Unit httpd.service is not loaded.
Instálalo usando sudo apt install apache2
(basado en Debian) o sudo yum install httpd
(Basado en Red Hat).
O puede recibir uno de los siguientes mensajes:
Failed to stop service httpd. Unit httpd.service is not running.
Esto indica que Apache ya está detenido, por lo que no es necesario realizar ninguna acción.
Failed to stop service httpd. Unit httpd.service is in a failed state.
Esto sugiere que Apache encontró un error y se encuentra en un estado fallido. Para solucionar problemas, ejecute sudo journalctl -xe
para ver registros detallados, luego intente reiniciar el servicio.
Failed to stop service httpd. Unit httpd.service is locked.
Este error ocurre si otro proceso está controlando el servicio. Espere brevemente e inténtelo nuevamente, o verifique si hay tareas de administración en ejecución con ps aux | grep httpd
para identificar el proceso de bloqueo.
VER: Linux 101: Cómo buscar archivos desde la línea de comandos de Linux
Reiniciar un servicio de Linux
Para reiniciar el mismo servicio (Apache):
- Abra una ventana de terminal.
- Ejecute el comando
sudo systemctl restart httpd
. - El servicio se reiniciará y volverá al indicador de bash.
- Recibirá el siguiente mensaje:
The service httpd has been restarted successfully.
Mensajes de error comunes
Si el servicio Apache no se está ejecutando, verá el siguiente resultado:
The service httpd is not running.
Puedes iniciarlo directamente con sudo systemctl start httpd
o comprobar su estado con systemctl status httpd
.
También puede ver lo siguiente:
Job for httpd.service failed.
Esto suele indicar un problema de configuración o dependencia. Para solucionar problemas, revise los detalles del error con sudo journalctl -xe
y corregir cualquier problema de configuración.
Iniciar, detener y reiniciar servicios con el uso del servicio
Para hacer las cosas interesantes, el comando service todavía funciona, incluso para aquellas distribuciones que han migrado a systemd y systemctl. Esto significa que aquellos que instintivamente escriben servicio cuando necesitan reiniciar un servicio en Linux no recibirán un Unknown command
error.
VER: Ejecute una búsqueda en Google desde la línea de comandos de Linux con Googler
En el caso del servicio, el comando redirigirá a systemctl. De hecho, cuando ejecuta el comando de servicio en una distribución habilitada para systemctl, verá claramente la información de redireccionamiento.

El uso del comando de servicio es un poco diferente al de systemctl. El nombre del servicio y las opciones de inicio, parada y reinicio cambian:
sudo service httpd start
sudo service httpd stop
sudo service httpd restart
En cada caso, verá el servicio redirigido a sistemactlpero el servicio que intenta iniciar, detener o reiniciar tendrá éxito.
Para obtener más información sobre lo que systemctl puede hacer por usted, asegúrese de ejecutar el comando man systemctl y leer la página del manual.