GNU/Linux >> Tutoriales Linux >  >> Linux

10 comandos prácticos de systemd:una referencia

Pobre systemd ha tenido su parte de detractores, pero parece que llegó para quedarse para los administradores de Linux, por lo que es mejor que nos acostumbremos. Este útil systemd La referencia de comandos lo ayudará a mantener la cordura cuando intente realizar tareas administrativas normales. Entonces, hasta que obtengamos algo que sea más útil, aceptable y deseable que systemd , disfrute de esta lista de diez comandos útiles para su comodidad. Estos comandos no están en un orden particular de importancia o relevancia.

Lista de archivos de unidad

Desde el systemd página de manual:un archivo de unidad es un archivo de estilo ini de texto sin formato que codifica información sobre un servicio, un socket, un dispositivo, un punto de montaje, un punto de montaje automático, un archivo o partición de intercambio, un objetivo de inicio, un archivo observado ruta del sistema, un temporizador controlado y supervisado por systemd , una porción de administración de recursos o un grupo de procesos creados externamente.

$ systemctl list-unit-files

UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static 
dev-mqueue.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                                     disabled
brandbot.path                                 disabled
systemd-ask-password-console.path             static  
systemd-ask-password-plymouth.path            static  
systemd-ask-password-wall.path                static  
session-1.scope                               static  
arp-ethers.service                            disabled
auditd.service                                enabled 
[email protected]                               enabled 

<many more entries>

Por supuesto, siempre puede canalizar a grep para ver solo los servicios habilitados.

$ systemctl list-unit-files |grep enabled

auditd.service                                enabled 
[email protected]                               enabled 
crond.service                                 enabled 
dbus-org.fedoraproject.FirewallD1.service     enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
firewalld.service                             enabled 
[email protected]                                enabled 
irqbalance.service                            enabled 
kdump.service                                 enabled 
lvm2-monitor.service                          enabled 

<many more entries>

Estos archivos de unidad, ubicados en /lib/systemd/system , son aproximadamente equivalentes a los scripts de inicio heredados que se encontraban en /etc/rc.d/init.d . De hecho, si usted o la instalación de su software crean secuencias de comandos de inicio, un systemd correspondiente El archivo de la unidad está asignado para usted. /etc/rc.d/init.d/README proporciona una explicación más detallada. :

You are looking for the traditional init scripts in /etc/rc.d/init.d,
and they are gone?

Here's an explanation on what's going on:

You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).

Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.

Thank you!

Further reading:
        man:systemctl(1)
        man:systemd(1)
        http://0pointer.de/blog/projects/systemd-for-admins-3.html
        http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities

Como puede ver, init.d ha sido eliminado a favor de systemd . Está aquí para quedarse hasta que a alguien se le ocurra algo mejor. (Espero que alguien esté trabajando rápidamente en un reemplazo).

Lista de unidades

La lista de unidades activas muestra mucha información útil sobre sus servicios cargados y activos. El resultado es demasiado detallado para demostrarlo aquí, pero pruebe el siguiente comando en su sistema para ver a qué me refiero.

$ systemctl list-units

Los campos de estado son geniales para ver, pero el campo de descripción es el más útil para mí. Proporciona información detallada sobre sus servicios.

Iniciar un servicio

Para obtener un nombre de servicio, enumere los archivos de su unidad y grep para el que desea. Luego usa el systemctl comando para iniciar su servicio. Estoy usando firewalld como el ejemplo.

$ sudo systemctl start firewalld

Sorprendentemente, o tal vez no tan sorprendentemente, no hay respuesta al iniciar, detener o reiniciar un servicio. Para verificar el estado de un servicio, debe usar el comando de estado.

Comprobar el estado de un servicio

Para verificar el estado de un servicio, use el systemctl status service-name comando.

$ sudo systemctl status sshd
[sudo] password for khess: 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-04-29 07:44:57 CDT; 2h 17min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1055 (sshd)
   CGroup: /system.slice/sshd.service
           └─1055 /usr/sbin/sshd -D

Apr 29 07:44:57 centos7 systemd[1]: Starting OpenSSH server daemon...
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on 0.0.0.0 port 22.
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on :: port 22.
Apr 29 07:44:57 centos7 systemd[1]: Started OpenSSH server daemon.
Apr 29 07:51:35 centos7 sshd[1396]: Accepted password for khess from 192.168.1.85 port 56769 ssh2

Me gusta el estado de systemd por los detalles dados. Por ejemplo, en la lista anterior, verá la ruta completa al archivo de la unidad, el estado, el comando de inicio y los últimos cambios de estado.

[ ¿Quiere probar Red Hat Enterprise Linux? Descárgalo ahora gratis. ]

Detener un servicio

Detener un servicio en ejecución es tan fácil como iniciar uno.

$ sudo systemctl stop firewalld

Nuevamente, no ve ninguna respuesta al emitir este comando. Emita un estado de servicio para comprobar su éxito o fracaso.

Reinicio de un servicio

Si desea detener e iniciar un servicio sin emitir dos comandos (después de todo, los administradores de sistemas son muy vagos), emita un reinicio.

$ sudo systemctl restart firewalld

No se muestra ninguna respuesta del sistema.

Reiniciar, detener y apagar el sistema

Estas tres tareas son las típicas que los administradores de sistemas deben conocer y ahora están bajo el control de systemd .

Reiniciar

Hay varias formas de reiniciar sus sistemas, pero el modo de espera anterior, reiniciar, es en realidad un enlace al systemctl dominio. Supongo que, dado que funciona, vincula el systemctl Comando con el interruptor de reinicio agregado de la siguiente manera:

$ sudo systemctl reboot

El mismo vínculo se aplica a los comandos detener y apagar.

Apagar y detener

No importa cómo solías hacerlo con halt -p o shutdown now o lo que sea, el comando universal ahora es:

$ sudo systemctl poweroff

Este comando apaga el sistema.

Configure los servicios para que se ejecuten en el momento del arranque

Estás acostumbrado al chkconfig Comando para permitir que sus servicios se ejecuten en el momento del arranque y bajo un nivel de ejecución particular. Bueno, esos días también se han ido y han sido usurpados por el ubicuo systemctl comando.

Permitir que un servicio se ejecute en el momento del arranque

Para configurar cualquier servicio para que se inicie en el arranque, emita el siguiente comando. Estoy usando firewalld como el servicio de ejemplo.

$ sudo systemctl enable firewalld

Desactivar la ejecución de un servicio en el momento del arranque

Para evitar que cualquier servicio se inicie en el momento del arranque, emita:

$ sudo systemctl disable firewalld

El firewalld el servicio no se iniciará en el momento del arranque.

Resumir

Este breve pero práctico systemd/systemctl la guía de referencia debería aliviar un poco el dolor de tratar con systemd . Esa es la teoría, al menos. Y, como verá a menudo en mis artículos o me escuchará decir en voz alta, "Todo funciona en papel". Asegúrate de hacerme saber en Twitter lo que piensas de mis artículos y también de sugerir nuevos temas.

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]


Linux
  1. Cómo crear un servicio Systemd en Linux

  2. Agregar un nuevo servicio a Linux systemd

  3. ¿Escribir archivos de servicio básicos de Systemd?

  4. Comandos de servicio base

  5. Referencia de la línea de comandos de systemd (hoja de trucos)

Comandos Systemctl para administrar el servicio Systemd

Uso de las funciones de systemd para proteger los servicios

Administrar cgroups con systemd

redirigir los registros del servicio systemd al archivo

activación de socket systemd frente a xinetd

¿Cómo enviar un correo electrónico si se reinicia un servicio systemd?