Cómo usar Systemctl para gestionar servicios y unidades de Systemd

Introducción

systemdes un sistema init y un administrador del sistema que se ha convertido en el nuevo estándar para las distribuciones Linux. Debido a su gran adopción, merece la pena familiarizarse con systemd, ya que hará que administrar servidores sea mucho más fácil. Conocer y utilizar las herramientas y demonios que componen systemdle ayudarán a apreciar mejor la potencia, la flexibilidad y las capacidades que proporciona, o al menos a simplificar su trabajo.

En esta guía, hablaremos del comando systemctl, que es la herramienta de administración central para controlar el sistema init. Explicaremos cómo administrar servicios, comprobar estados, cambiar estados del sistema y trabajar con los archivos de configuración.

Tenga en cuenta que aunque systemdes el sistema init predeterminado para muchas distribuciones Linux, no se implementa universalmente en todas las distribuciones. A medida que avanza en este tutorial, si su terminal arroja el error bash: systemctl is not installed, es probable que su equipo tenga un sistema init diferente instalado.

Administracion de servicios

La finalidad principal de un sistema init es inicializar los componentes que deben iniciarse tras arrancar el kernel Linux (normalmente conocidos como componentes “userland”). El sistema init también se utiliza para administrar servicios y demonios para el servidor en cualquier momento mientras se ejecuta el sistema. Teniendo eso en cuenta, comenzaremos con algunas operaciones básicas de administración de servicio.

En systemd, el destino de la mayoría de las acciones son “unidades”, que son recursos que systemdsabe cómo administrar. Las unidades se categorizan por el tipo de recurso al que representan y se definen con archivos conocidos como archivos de unidad. El tipo de cada unidad puede deducirse del sufijo al final del archivo.

Para las tareas de administración de servicio, la unidad de destino será unidades de servicio, que tienen archivos de unidad con un sufijo .service. Sin embargo, para la mayoría de los comandos de administración de servicio, puede dejar fuera el sufijo .service, ya que systemdes lo suficientemente inteligente para saber que probablemente quiere operar sobre un servicio cuando utiliza comandos de administración de servicio.

Iniciar y detener servicios

Para iniciar un servicio systemd, ejecute instrucciones en el archivo de la unidad del servicio, utilice el comando start. Si está ejecutando como usuario no root, tendrá que usar sudo, ya que esto afectará al estado del sistema operativo.

sudo systemctl start application.service

Como hemos mencionado antes, systemdsabe buscar los archivos *.servicepara los comandos de administración de servicio, de forma que el comando podría escribirse fácilmente así:

Aunque puede usar el formato anterior para la administración general, para mayor claridad, usaremos el sufijo .servicepara el resto de los comandos, con el objetivo de ser explícitos sobre el destino en el que estamos operando.

Para detener un servicio que se esté ejecutando actualmente, puede usar el comando stop:

sudo systemctl stop application.service

Reiniciar y volver a cargar

Para reiniciar un servicio en ejecución, puede usar el comando restart:

sudo systemctl restart application.service

Si la aplicación en cuestión puede volver a cargar sus archivos de configuración (sin reiniciar), puede emitir el comando reloadpara iniciar ese proceso:

sudo systemctl reload application.service

Si no está seguro de si el servicio tiene la funcionalidad de volver a cargar su configuración, puede emitir el comando reload-or-restart. Esto volverá a cargar la configuración en vigor, si está disponible. De lo contrario, reiniciará el servicio de forma que se recoja la nueva configuración:

sudo systemctl reload-or-restart application.service

Cómo habilitar y deshabilitar servicios

Los comandos anteriores son útiles para iniciar o detener servicios durante la sesión actual. Para indicar systemdque inicie servicios automáticamente en el arranque, debe habilitarlos.

Para iniciar un servicio en el arranque, utilice el comando enable:

sudo systemctl enable application.service

Esto creará un enlace simbólico desde la copia del sistema del archivo de servicio (normalmente en /lib/systemd/system/etc/systemd/system) en la ubicación del disco donde systemdbusca los archivos de inicio automático (normalmente . Repasaremos qué es un destino más adelante en esta guía)./etc/systemd/system/some_target.target.wants

Para impedir que el servicio se inicie automáticamente, puede escribir:

sudo systemctl disable application.service

Esto eliminará el enlace simbólico que indicaba que el servicio debía iniciarse automáticamente.

Tenga en cuenta que habilitar el servicio no lo inicia en la sesión actual. Si desea iniciar el servicio y habilitarlo en el arranque, tendrá que emitir los comandos startenable.

Cómo comprobar el estado de los servicios

Para comprobar el estado de un servicio en su sistema, puede usar el comando status:

systemctl status application.service

Esto le proporcionará el estado del servicio, la jerarquía de cgroup y las primeras líneas de registro.

Por ejemplo, cuando se comprueba el estado de un servidor Nginx, puede ver un resultado como este:

Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2015-01-27 19:41:23 EST; 22h ago
 Main PID: 495 (nginx)
   CGroup: /system.slice/nginx.service
           ├─495 nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;
           └─496 nginx: worker process
Jan 27 19:41:23 desktop systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 27 19:41:23 desktop systemd[1]: Started A high performance web server and a reverse proxy server.

Esto le proporciona una buena visión general del estado actual de la aplicación, y le notifica de cualquier problema y cualquier acción que pueda ser necesaria.

También hay métodos para comprobar los estados específicos. Por ejemplo, para comprobar si una unidad está activa actualmente (ejecutándose) puede usar el comando is-active:

systemctl is-active application.service

Esto devolverá el estado actual de la unidad, que es normalmente activoinactivo. El código de salida será “0” si está activo, lo que hace que el resultado sea más sencillo de analizar en las secuencias de comando shell.

Para ver si la unidad está habilitada, puede usar el comando is-enabled:

systemctl is-enabled application.service

Esto indicará si el servicio está habilitadodeshabilitadoy establecerá el código de salida en “0” o “1”, dependiendo de la respuesta a la pregunta del comando.

Una tercera comprobación es si la unidad está en estado fallido. Esto indica que hubo un problema al iniciar la unidad en cuestión:

systemctl is-failed application.service

Esto devolverá activesi se está ejecutando adecuadamente o failedsi se ha producido un error. Si la unidad se detuvo intencionadamente, puede unknowndevolverla inactive. Un estado de salida de “0” indica que se produjo un error y un estado de salida de “1” indica cualquier otro estado.

Descripción general del estado del sistema

Los comandos hasta ahora han sido útiles para administrar servicios individuales, pero no son muy útiles para explorar el estado actual del sistema. Hay varios comandos systemctlque proporcionan esta información.

Cómo enumerar las unidades actuales

Para ver una lista de todas las unidades activas que systemdconoce, podemos usar el comando list-units:

systemctl list-units

Esto le mostrará una lista de todas las unidades que systemdtienen activadas actualmente en el sistema.

El resultado tiene las siguientes columnas:

  • UNIDAD : El nombre de la unidad desystemd
  • LOAD : Si la configuración de la unidad ha sido analizada por systemd. La configuración de las unidades cargadas se mantiene en la memoria.
  • ACTIVO : Un estado resumido que indica si la unidad está activa. Esta es normalmente una forma bastante básica de saber si la unidad se ha iniciado correctamente o no.
  • SUB : Este es un estado de nivel inferior que indica información más detallada sobre la unidad. Esto a menudo varía según el tipo de unidad, estado y el método real en el que se ejecuta la unidad.
  • DESCRIPCIÓN : Una descripción textual breve de qué es y hace la unidad.

Ya que el comando list-unitsmuestra solo las unidades activadas por defecto, todas las entradas por encima se mostrarán loadeden la columna LOAD y activeen la columna ACTIVE. Esta pantalla es, en realidad, el comportamiento predeterminado de systemctlcuando se invoca sin comandos adicionales, de modo que verá lo mismo si invoca systemctlsin argumentos:

systemctl

Podemos indicar systemctlque producirá información diferente agregando marcadores adicionales. Por ejemplo, para ver todas las unidades que systemdha cargado (o intenté cargar), independientemente de si están activadas actualmente, puede usar el marcador --all, de esta forma:

systemctl list-units --all

Esto mostrará cualquier unidad que systemdhaya cargado o intentado cargar, independientemente de su estado actual en el sistema. Ciertas unidades se vuelven inactivas tras ejecutarse, y algunas de las unidades que systemdintentaron cargar pueden no haber encontrado en el disco.

Puede usar otros marcadores para filtrar estos resultados. Por ejemplo, puede usar el indicador --state=para indicar los estados LOAD, ACTIVE o SUB que deseamos ver. Tendremos que mantener el marcador --allpara que systemctlpermita que se muestren las unidades no activadas:

systemctl list-units --all --state=inactive

Otro filtro común es el filtro --type=. Podemos indicar a systemctlque solo muestre unidades del tipo en el que estemos interesados. Por ejemplo, para ver únicamente las unidades de servicio activadas, podemos usar:

systemctl list-units --type=service

Listar todos los archivos de la unidad

El comando list-unitssolo muestra las unidades que systemdha intentado analizar y cargar en la memoria. Ya que systemdsolo leerá las unidades que cree que necesita, esto no incluirá necesariamente todas las unidades disponibles en el sistema. Para ver todos los archivos de unidad disponibles en las rutas systemd, incluidos aquellos que systemdno haya intentado cargar, puede usar el comando list-unit-files:

systemctl list-unit-files

Las unidades son representaciones de los recursos que systemdconoce. Ya que systemdno ha leído necesariamente todas las definiciones de las unidades en esta vista, solo presente información sobre los propios archivos. El resultado tiene dos columnas, el archivo de la unidad y el estado.

Output
UNIT FILE                                  STATE   
proc-sys-fs-binfmt_misc.automount          static  
dev-hugepages.mount                        static  
dev-mqueue.mount                           static  
proc-fs-nfsd.mount                         static  
proc-sys-fs-binfmt_misc.mount              static  
sys-fs-fuse-connections.mount              static  
sys-kernel-config.mount                    static  
sys-kernel-debug.mount                     static  
tmp.mount                                  static  
var-lib-nfs-rpc_pipefs.mount               static  
org.cups.cupsd.path                        enabled
. . .

El estado normalmente estará habilitadodeshabilitadoestáticoenmascarado. En este contexto, “estático” significa que el archivo de unidad no contiene una sección install, que se utiliza para habilitar una unidad. Como tal, estas unidades no pueden habilitarse. Normalmente, esto significa que la unidad realiza una única acción o se utiliza solo como dependencia de otra unidad y no debería ejecutarse por sí misma.

En breve explicaremos lo que significa enmascarado.

Gestión de la unidad

Hasta ahora, hemos estado trabajando con servicios y mostrando información sobre la unidad y los archivos de la unidad que systemdconoce. Sin embargo, encontraremos más información específica sobre las unidades usando algunos comandos adicionales.

Mostrar un archivo de unidad

Para mostrar el archivo de unidad que systemdha cargado en su sistema, puede usar el comando cat(esto se agregó en la versión 209 de systemd). Por ejemplo, para ver el archivo de unidad del demonio de programación atd, podríamos escribir:

systemctl cat atd.service
Output
[Unit]
Description=ATD daemon
[Service]
Type=forking
ExecStart=/usr/bin/atd
[Install]
WantedBy=multi-user.target

El resultado es el archivo de la unidad tal como lo conoce el proceso systemdque se está ejecutando actualmente. Esto puede ser importante si ha modificado archivos de unidad recientemente o si está omitiendo ciertas opciones en un fragmento del archivo de unidad (hablaremos de esto más tarde).

Mostrar dependencias

Para ver el árbol de dependencias de una unidad, puede usar el comando list-dependencies:

systemctl list-dependencies sshd.service

Esto mostrará una jerarquía asignando las dependencias que deben tratarse para iniciar la unidad en cuestión. Las dependencias, en este contexto, incluyen las unidades que son necesarias o deseadas por unidades de nivel superior.

Output
sshd.service
├─system.slice
└─basic.target
  ├─microcode.service
  ├─rhel-autorelabel-mark.service
  ├─rhel-autorelabel.service
  ├─rhel-configure.service
  ├─rhel-dmesg.service
  ├─rhel-loadmodules.service
  ├─paths.target
  ├─slices.target
. . .

Las dependencias recursivas solo se muestran para las unidades .target, que indican los estados del sistema. Para listar de forma recursiva todas las dependencias, incluido el indicador --all.

Para mostrar las dependencias inversas (unidades que dependen de la unidad especificada) puede agregar el indicador --reverseal comando. Otros indicadores que son útiles son los indicadores --before--after, que pueden usarse para mostrar las unidades que dependen de la unidad especificada que comienza antes y después de ellas mismas respectivamente.

Comprobar las propiedades de la unidad

Para ver las propiedades de nivel bajo de una unidad, puede usar el comando show. Esto mostrará una lista de propiedades que se establecen para la unidad especificada usando un formato key=value:

systemctl show sshd.service

Output
Id=sshd.service
Names=sshd.service
Requires=basic.target
Wants=system.slice
WantedBy=multi-user.target
Conflicts=shutdown.target
Before=shutdown.target multi-user.target
After=syslog.target network.target auditd.service systemd-journald.socket basic.target system.slice
Description=OpenSSH server daemon
. . .

Si desea mostrar una única propiedad, puedo pasar el indicador -pcon el nombre de la propiedad. Por ejemplo, para ver los conflictos que sshd.servicetiene la unidad, puede escribir:

systemctl show sshd.service -p Conflicts

Output
Conflicts=shutdown.target

Publicaciones Similares

2.155 comentarios

  1. Этот информационный обзор станет отличным путеводителем по актуальным темам, объединяющим важные факты и мнения экспертов. Мы исследуем ключевые идеи и представляем их в доступной форме для более глубокого понимания. Читайте, чтобы оставаться в курсе событий!
    Получить дополнительную информацию – https://vivod-iz-zapoya-1.ru/

  2. п»їJust now, I discovered an interesting resource regarding buying affordable antibiotics. It covers the manufacturing standards for ED medication. If you are looking for factory prices, check this out: п»їthis link. Good info.

  3. п»їTo be honest, I came across a great report about cheap Indian generics. It details WHO-GMP protocols when buying antibiotics. For those interested in Trusted Indian sources, check this out: п»їkisawyer.us.com. Hope it helps.

  4. п»їTo be honest, I came across a great article concerning buying affordable antibiotics. The site discusses the manufacturing standards on prescriptions. If anyone wants Trusted Indian sources, check this out: п»їhttps://kisawyer.us.com/# reputable indian pharmacies. Good info.

  5. п»їLately, I came across a helpful resource concerning generic pills from India. It explains how to save money on prescriptions. In case you need cheaper alternatives, take a look: п»їhttps://kisawyer.us.com/# online pharmacy india. Worth a read.

  6. For those looking to save big on pills, you should try reading this resource. The site explains prices for generics. Huge savings available here: п»їhttps://polkcity.us.com/# mexico pharmacy.

  7. п»їJust now, I stumbled upon an informative guide regarding ordering meds from India. It explains how to save money for ED medication. For those interested in reliable shipping to USA, read this: п»їkisawyer.us.com. Hope it helps.

  8. п»їJust now, I discovered a helpful article about cheap Indian generics. The site discusses the manufacturing standards for ED medication. For those interested in Trusted Indian sources, go here: п»їkisawyer.us.com. It helped me.

  9. Sharing, a detailed overview on cross-border shipping rules. It breaks down how to avoid scams for ED meds. Source: п»їhttps://polkcity.us.com/# mexico pharmacy price list.

  10. п»їLately, I came across an interesting report regarding buying affordable antibiotics. It details WHO-GMP protocols on prescriptions. In case you need Trusted Indian sources, read this: п»їlink. Cheers.

  11. п»їRecently, I stumbled upon an informative article about ordering meds from India. The site discusses the manufacturing standards when buying antibiotics. For those interested in cheaper alternatives, check this out: п»їhttps://kisawyer.us.com/# buy medicines online in india. Good info.

  12. п»їRecently, I came across a great page regarding ordering meds from Mexico. The site discusses FDA equivalents for generic meds. If you are looking for cheaper alternatives, go here: п»їwebsite. Might be useful.

  13. п»їJust now, I discovered an interesting article concerning buying affordable antibiotics. The site discusses FDA equivalents for generic meds. For those interested in Trusted pharmacy sources, take a look: п»їpolkcity.us.com. Hope it helps.

  14. п»їTo be honest, I discovered a helpful resource regarding generic pills from India. It details how to save money when buying antibiotics. If you are looking for Trusted Indian sources, check this out: п»їhttps://kisawyer.us.com/# india online pharmacy. Hope it helps.

  15. п»їTo be honest, I came across an interesting article about ordering meds from India. It covers the manufacturing standards for generic meds. If anyone wants factory prices, visit this link: п»їkisawyer.us.com. Hope it helps.

  16. I was wondering about buying generic pills online. I saw a good site that ranks safe places: п»їhttps://polkcity.us.com/# mexico pharmacy price list. Looks legit.

  17. п»їActually, I came across a great guide about ordering meds from India. It explains CDSCO regulations on prescriptions. If anyone wants reliable shipping to USA, take a look: п»їhttps://kisawyer.us.com/# online shopping pharmacy india. Worth a read.

  18. п»їActually, I came across an informative report concerning cheap Indian generics. It covers the manufacturing standards for ED medication. In case you need Trusted Indian sources, take a look: п»їofficial site. Cheers.

  19. п»їLately, I came across a helpful article concerning buying affordable antibiotics. It details how to save money for generic meds. If you are looking for reliable shipping to USA, visit this link: п»їhttps://polkcity.us.com/# pharmacys in mexico. Might be useful.

  20. п»їTo be honest, I stumbled upon a great resource regarding generic pills from India. The site discusses WHO-GMP protocols when buying antibiotics. In case you need factory prices, visit this link: п»їп»їclick here. Worth a read.

  21. п»їTo be honest, I stumbled upon a helpful report about cheap Indian generics. The site discusses the manufacturing standards for ED medication. If you are looking for cheaper alternatives, check this out: п»їhttps://kisawyer.us.com/# top 10 pharmacies in india. Worth a read.

  22. Thanks for the sensible critique. Me and my neighbor were just preparing to do some research on this. We got a grab a book from our local library but I think I learned more clear from this post. I’m very glad to see such excellent info being shared freely out there.

  23. п»їLately, I discovered an interesting report about ordering meds from India. It covers CDSCO regulations when buying antibiotics. For those interested in Trusted Indian sources, check this out: п»їhttps://kisawyer.us.com/# india pharmacy. Might be useful.

  24. п»їRecently, I came across a helpful article about Mexican Pharmacy standards. It details how to save money for ED medication. In case you need reliable shipping to USA, go here: п»їpolkcity.us.com. Worth a read.

  25. п»їJust now, I stumbled upon a helpful report about Indian Pharmacy exports. It covers CDSCO regulations when buying antibiotics. If anyone wants reliable shipping to USA, take a look: п»їcheck here. It helped me.

  26. п»їActually, I discovered a useful report about generic pills from India. It explains CDSCO regulations for generic meds. If you are looking for reliable shipping to USA, go here: п»їkisawyer.us.com. Hope it helps.

  27. FYI, an official guide on cross-border shipping rules. It breaks down quality control for antibiotics. You can read it here: п»їhttps://polkcity.us.com/# mexican medicine store.

  28. п»їTo be honest, I came across an interesting guide about buying affordable antibiotics. It details WHO-GMP protocols for ED medication. In case you need cheaper alternatives, visit this link: п»їdetails. Hope it helps.

  29. п»їJust now, I discovered a useful article regarding buying affordable antibiotics. It explains regulations for ED medication. In case you need cheaper alternatives, take a look: п»їhttps://polkcity.us.com/# pharmacy in mexico city. Good info.

  30. п»їTo be honest, I came across a helpful guide regarding buying affordable antibiotics. It explains the manufacturing standards when buying antibiotics. If anyone wants reliable shipping to USA, visit this link: п»їmail order pharmacy india. Hope it helps.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *