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. ]