Gestión de Servicios en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Bienvenido a este laboratorio práctico sobre la gestión de servicios en Linux. Los servicios en Linux son procesos en segundo plano que manejan funciones críticas del sistema, como la conectividad de red, el registro (logging), la impresión, entre otras. Gestionar estos servicios de manera eficiente es una habilidad esencial para los administradores de Linux.

En este laboratorio, aprenderá cómo utilizar el comando systemctl, que forma parte del conjunto systemd - el sistema de inicio (init system) estándar y gestor de servicios para la mayoría de las distribuciones Linux modernas. Practicará cómo verificar el estado de los servicios, controlarlos iniciándolos y deteniéndolos, y configurar el comportamiento de los servicios al arrancar el sistema.

Al final de este laboratorio, entenderá los conceptos básicos de la gestión de servicios en Linux, lo que le permitirá controlar de manera efectiva los servicios del sistema en un entorno Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-271377{{"Gestión de Servicios en Linux"}} linux/cat -.-> lab-271377{{"Gestión de Servicios en Linux"}} linux/redirect -.-> lab-271377{{"Gestión de Servicios en Linux"}} linux/service -.-> lab-271377{{"Gestión de Servicios en Linux"}} end

Comprender y Verificar el Estado de los Servicios del Sistema

En este paso, aprenderá cómo verificar el estado de los servicios del sistema utilizando el comando systemctl. Comprender el estado de los servicios es el primer paso para una gestión efectiva de los servicios.

¿Qué son los Servicios del Sistema?

Los servicios del sistema (o demonios, daemons) son programas que se ejecutan en segundo plano para realizar diversas tareas del sistema. Por lo general, se inician al arrancar el sistema y continúan ejecutándose hasta que el sistema se apaga. Algunos ejemplos son servidores web, servidores de bases de datos, servidores SSH y servicios de impresión.

Verificar el Estado de un Servicio

Comencemos verificando el estado del servicio SSH (sshd), que se utiliza comúnmente para acceder de forma remota a sistemas Linux:

  1. Abra una terminal en el entorno de la máquina virtual (VM) de LabEx. Ya debería estar en el directorio predeterminado, que es /home/labex/project.

  2. Ejecute el siguiente comando para verificar el estado del servicio SSH:

    systemctl status sshd

    Debería ver una salida similar a esta:

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-10-25 08:15:00 UTC; 1h 30min ago
        Docs: man:sshd(8)
              man:sshd_config(5)
     Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 1235 (sshd)
       Tasks: 1 (limit: 4915)
      Memory: 5.6M
         CPU: 500ms
      CGroup: /system.slice/ssh.service
              └─1235 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    Esta salida proporciona información importante sobre el servicio:

    • Loaded: Indica si el servicio está cargado y si está habilitado para iniciar al arrancar el sistema.
    • Active: Indica si el servicio está actualmente en ejecución.
    • Process/Main PID: Muestra el ID del proceso del servicio.
    • Memory/CPU: Muestra el uso de recursos.
    • Logs: Entradas recientes de registro relacionadas con el servicio.
  3. Si necesita verificar el estado de un servicio diferente, puede reemplazar sshd con el nombre de ese servicio. Por ejemplo, para verificar el estado del servidor web Apache (si está instalado):

    systemctl status apache2

Listar Todos los Servicios

Puede listar todos los servicios de su sistema con el siguiente comando:

  1. Para listar todos los servicios activos:

    systemctl list-units --type=service --state=active

    Este comando muestra todos los servicios que están actualmente activos en su sistema.

  2. Para listar todos los servicios independientemente de su estado:

    systemctl list-units --type=service --all

Crear un Archivo con la Lista de Servicios

Ahora, creemos un archivo para almacenar una lista de todos los servicios en ejecución en el sistema:

  1. Cree un archivo llamado services_list.txt en el directorio actual ejecutando:

    systemctl list-units --type=service --state=running > ~/project/services_list.txt

    Este comando ejecuta systemctl list-units y redirige su salida a un archivo llamado services_list.txt en su directorio de proyecto.

  2. Verifique que el archivo se haya creado y contenga datos:

    cat ~/project/services_list.txt

    Debería ver una lista de todos los servicios en ejecución en su sistema.

En este paso, ha aprendido cómo verificar el estado de los servicios y cómo crear una lista de todos los servicios en ejecución en su sistema. Esta información es valiosa para entender qué servicios están activos y cómo están configurados.

Control de Servicios del Sistema: Inicio, Parada y Reinicio

En este paso, aprenderá cómo iniciar, detener y reiniciar servicios del sistema. Estas operaciones son esenciales para el mantenimiento de servicios, la resolución de problemas y la aplicación de cambios de configuración.

Iniciar y Detener Servicios

Practiquemos el control del servicio SSH:

  1. Primero, verifique el estado actual del servicio SSH:

    systemctl status sshd

    Tenga en cuenta si el servicio está actualmente activo o inactivo.

  2. Ahora, detenga el servicio SSH:

    sudo systemctl stop sshd

    Este comando detiene el servicio inmediatamente. Si tiene éxito, este comando no produce salida.

  3. Verifique que el servicio se haya detenido:

    systemctl status sshd

    La salida ahora debe mostrar que el servicio está "inactivo (detenido)":

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Wed 2023-10-25 10:15:00 UTC; 5s ago
  4. Inicie el servicio nuevamente:

    sudo systemctl start sshd
  5. Verifique que el servicio se haya iniciado:

    systemctl status sshd

    La salida debe mostrar que el servicio está "activo (en ejecución)" nuevamente.

Reiniciar Servicios

Reiniciar un servicio es una operación común, especialmente después de cambiar su configuración:

  1. Para reiniciar el servicio SSH:

    sudo systemctl restart sshd

    Este comando detiene y luego inicia el servicio.

  2. Para verificar el reinicio, verifique el estado del servicio:

    systemctl status sshd

    Mire la línea "Active" para ver cuándo se inició el servicio por última vez.

Crear un Archivo de Referencia para los Comandos de Control de Servicios

Creemos un archivo de referencia con los comandos que ha aprendido:

  1. Cree un archivo llamado service_control.txt en su directorio de proyecto:

    echo "Service Control Commands:" > ~/project/service_control.txt
    echo "Start a service: sudo systemctl start <service_name>" >> ~/project/service_control.txt
    echo "Stop a service: sudo systemctl stop <service_name>" >> ~/project/service_control.txt
    echo "Restart a service: sudo systemctl restart <service_name>" >> ~/project/service_control.txt
  2. Verifique el contenido del archivo:

    cat ~/project/service_control.txt

En este paso, ha aprendido cómo controlar servicios iniciándolos, deteniéndolos y reiniciándolos. Estas operaciones son fundamentales para la gestión y el mantenimiento de servicios en sistemas Linux.

Gestión del Comportamiento de Arranque de los Servicios: Habilitar y Deshabilitar

En este paso, aprenderá cómo configurar si los servicios se inician automáticamente cuando el sistema arranca. Esto es importante para garantizar que los servicios necesarios estén disponibles sin intervención manual después de un reinicio del sistema.

Comprender la Configuración de Arranque de los Servicios

Los servicios se pueden configurar para que se inicien automáticamente al arrancar el sistema (habilitados) o para que requieran un inicio manual (deshabilitados). Esta configuración es independiente del estado actual de ejecución del servicio.

Verificar si un Servicio está Habilitado

  1. Para verificar si el servicio SSH está configurado para iniciar al arrancar:

    systemctl is-enabled sshd

    La salida será "enabled" (se inicia al arrancar) o "disabled" (no se inicia al arrancar).

Deshabilitar un Servicio

Cuando deshabilita un servicio, lo configura para que no se inicie automáticamente al arrancar el sistema:

  1. Deshabilite el servicio SSH:

    sudo systemctl disable sshd

    Debería ver un mensaje que indique que se ha eliminado el enlace simbólico:

    Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
  2. Verifique que el servicio ahora está deshabilitado:

    systemctl is-enabled sshd

    La salida debe ser "disabled".

  3. Tenga en cuenta que deshabilitar un servicio no lo detiene si está actualmente en ejecución. Verifique el estado actual:

    systemctl status sshd

    Aunque el servicio ahora está deshabilitado para el próximo arranque, aún puede estar activo.

Habilitar un Servicio

Cuando habilita un servicio, lo configura para que se inicie automáticamente al arrancar el sistema:

  1. Vuelva a habilitar el servicio SSH:

    sudo systemctl enable sshd

    Debería ver un mensaje que indique que se ha creado el enlace simbólico:

    Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
  2. Verifique que el servicio ahora está habilitado:

    systemctl is-enabled sshd

    La salida debe ser "enabled".

Comandos Combinados

También puede combinar la habilitación/deshabilitación con el inicio/detención en un solo comando:

  1. Para deshabilitar y detener un servicio en un solo comando:

    sudo systemctl disable --now sshd
  2. Para habilitar e iniciar un servicio en un solo comando:

    sudo systemctl enable --now sshd

Crear un Archivo de Referencia para la Configuración de Arranque de los Servicios

Creemos un archivo de referencia con los comandos que ha aprendido:

  1. Cree un archivo llamado service_boot.txt en su directorio de proyecto:

    echo "Service Boot Configuration Commands:" > ~/project/service_boot.txt
    echo "Check if a service is enabled: systemctl is-enabled <service_name>" >> ~/project/service_boot.txt
    echo "Enable a service to start at boot: sudo systemctl enable <service_name>" >> ~/project/service_boot.txt
    echo "Disable a service from starting at boot: sudo systemctl disable <service_name>" >> ~/project/service_boot.txt
    echo "Enable and immediately start a service: sudo systemctl enable --now <service_name>" >> ~/project/service_boot.txt
    echo "Disable and immediately stop a service: sudo systemctl disable --now <service_name>" >> ~/project/service_boot.txt
  2. Verifique el contenido del archivo:

    cat ~/project/service_boot.txt

En este paso, ha aprendido cómo gestionar el comportamiento de arranque de los servicios habilitándolos y deshabilitándolos. Esto es crucial para configurar qué servicios se inician automáticamente al arrancar el sistema, garantizando que los servicios necesarios estén disponibles mientras que los innecesarios no consuman recursos.

Resumen

En este laboratorio, ha aprendido los fundamentos de la gestión de servicios en Linux utilizando el comando systemctl. Ha practicado habilidades esenciales que todo administrador de Linux debe conocer:

  1. Verificar el estado de los servicios: Ha aprendido cómo ver el estado actual de los servicios, lo cual es crucial para el monitoreo y la resolución de problemas.

  2. Controlar los servicios: Ha practicado iniciar, detener y reiniciar servicios, que son operaciones básicas necesarias para el mantenimiento y los cambios de configuración.

  3. Gestionar el comportamiento de arranque: Ha aprendido cómo habilitar y deshabilitar servicios al inicio del sistema, lo que le permite controlar qué servicios se ejecutan automáticamente después de un reinicio.

Estas habilidades proporcionan la base para una gestión efectiva de servicios en entornos Linux. A medida que continúe trabajando con sistemas Linux, encontrará estos comandos esenciales para mantener la estabilidad y el rendimiento del sistema.

Recuerde que una gestión adecuada de servicios es crítica para la seguridad del sistema, la optimización de recursos y garantizar que la funcionalidad necesaria esté disponible cuando sea necesario. El conocimiento que ha adquirido en este laboratorio servirá como base para tareas más avanzadas de administración de Linux.