INICIO GNU/LINUX SOBRE SYSTEMD: MEJORAS EN SYSTEMD, UNITS Y TARGETS; USO DE SYSTEMCTL, COMPATIBILIDAD CON SYSV
GNU/Linux (120)
Distribuciones (2) Systemd
Beginners (2) Desde hace ya un tiempo son muchas las crticas que surgen entorno al sistema de inicializacin systemd, crticas
Docker (1) que quiero pensar que son fruto del miedo a lo desconocido, aunque otras opiniones me resultan que estn
Gua rpida (55)
suficientemente documentadas y que quizs tengan razn, o incluso leo cosas que directamente son en mi opinin
How To (26)
escritas bajo la ignorancia .
Inters (8)
Java Virtual Machine (4)
Estar acostumbrados a sistemas de inicio como SysV y sus maravillosos scripts de inicio o incluso a Upstart (ambos
Libros (1)
con entradas en este mismo blog) no puede ser la escusa para no querer aprender y aceptar las nuevas
LPIC1 (12)
posibilidades que se nos ofrecen, y que en un futuro prximo veremos si es un sistema factible o no lo es, pero de
Scripts (2)
Virtualizacin (11) primera mano creo que deberamos de confiar una vez mas en GNU/Linux en general ya que prcticamente todas
MS Windows (1) las distribuciones han aceptado o aceptarn en breves, este sistema de inicio como su sistema de inicializacin por
Off topic (14) defecto (an con compatibilidad con algunos programas que siguen en SysV).
Android (7)
Raspberry (5) Bien iba a poner enlaces y comentarios curiosos que he encontrado en algunas webs y blogs, pero hara el post
demasiado extenso, por lo que he decidido pasar directamente al grano.
LTIMAS ENTRADAS Aclaracin: Antes de comenzar, decir que no soy ningn experto en la materia, pero he hecho por conocer, por
Capacidades de paralelizacin agresiva usando socket: systemd crea de una misma vez todos los sockets
Seguir #4sysadmins
para todos los demonios acelerando as el arranque completo e iniciar ms procesos en paralelo. En un
ARCHIVOS
segundo paso systemd ejecutar a la vez todos los demonios.
Activacin D-Bus para iniciar servicios: Utilizando la activacin D-Bus, un servicio puede ser iniciado la
agosto 2016 (8)
primera vez que es accedido.
julio 2016 (8)
junio 2016 (1)
Seguimiento de procesos utilizando Linux cgroups: cgroup tambin llamados grupos de control, es una
caracterstica del kernel para crear lmites, polticas e incluso explicar el uso de los recursos de ciertos grupos
mayo 2016 (1) de procesos. cgroup asocia un conjunto de tareas con un conjunto de parmetros, para uno o ms
abril 2016 (3) subsistemas, proporcionando un control de servicios y tareas, as como todos sus futuros hijos en grupos
febrero 2016 (7)
jerrquico. Un subsistema es un mdulo resultado de la agrupacin de diversas tareas con el fin de mantener
enero 2016 (7)
diciembre 2015 (7)
un mejor control sobre estas de forma particular.
noviembre 2015 (7)
Nota: La herramienta systemd-cgls nos muestra recursivamente el contenido del rbol de jerarquas de un
octubre 2015 (7)
septiembre 2015 (8) determinado grupo de control de Linux.
agosto 2015 (9)
Mantiene puntos de montaje y automontaje: Puede utilizarse para montar o desmontar los puntos de
julio 2015 (9)
montaje, quedando /etc/fstab como una fuente de configuracin adicional a la que podremos llamar para su
junio 2015 (10)
mayo 2015 (7) supervisin con la opcin comment= de fstab para marcar las entradas controladas por systemd.
abril 2015 (9)
En definitiva, systemd ha sido creado para ofrecer un inicio mas rpido y flexible que SysV, permitiendo el arranque
marzo 2015 (10)
febrero 2015 (7) paralelo de servicios y su inicio basado en la deteccin de conexin de nueva unidad externa.
enero 2015 (7)
Nota: Hasta ahora el PID1 era para el programa init, cosa que ha cambiado en systemd a favor de
/usr/lib/systemd/systemd y adems systemd al igual que Upstart deja de utilizar el archivo /etc/inittab
LICENCIA
Algunas de las mejoras que ofrece systemd:
Entonces los archivos de configuracin tendrn los nombres: programa.service, socket.socket, dispositivo.device,
puntodemontaje.mount, etc
Nota: La unidad default.target activa servicios y otras unidades dependientes, durante el arranque de systemd. Esto
lo comentaremos en el apartado target
En SysV habilitbamos servicios con chkconfig (o reproducamos listas de estos para ver cual de ellos se ejecutaba
al arranque), algo que ahora bajo systemd podemos hacer con los siguientes comandos:
Habilitar el servicio httpd al arranque del sistema (chkconfig httpd on , para SysV):
Listar todas las unidades de servicios instaladas (algo parecido a chkconfig list)
#systemctl list-unit-files
O solo aquellas que se encuentran en activadas:
Podemos apreciar que a la hora de pasar el nombre del servicio lo hacemos con el nombre completo, es decir
incluyendo su sufijo, pero existen una serie de atajos:
Si no se especifica el sufijo, systemctl asumir que es .service. Por ejemplo, netcfg y netcfg.service se
consideran equivalentes.
Los puntos de montaje se traducirn automticamente en la correspondiente unidad .mount. Por ejemplo, si
especifica /home ser equivalente a home.mount.
Similar a los puntos de montaje, los dispositivos se traducen automticamente en la correspondiente unidad
.device, por lo tanto, la especificacin /dev/sda2 es equivalente a dev-sda2.device.
Uso de systemctl
La utilidad de administracin de las unit de systemd es systemctl, la cual combina las herramientas service y
chkconfig de SysV, por lo tanto podremos arrancar, parar, recargar servicios, activar o desactivar servicios en el
arranque, listar los estados de los servicios,etc
Creo que con la siguiente tabla veremos el uso bsico de systemctl adems de sus iguales en SysV.
1* Puede que un servicio este enable pero no tiene porqu estar activo cuando iniciemos sesin ya que puede que
ese servicio este configurado para ejecutarse solo en determinados runlevels (o target en nuestro caso, veremos que
son los target a continuacin), a diferencia de chkconfig list de SysV que mostraba todos los servicios con todos los
runlevels posibles y para cada uno indicaba si estaba on o off. Para conseguir algo parecido en systemd, tendramos
que listar los target disponibles y veramos que servicios se ubican dentro de estos, as sabremos con que target (o
runlevel) un servicio ser iniciado. Podemos emplear el siguiente listado
#ls /etc/systemd/system/*.wants/httpd.service
/etc/systemd/system/multi-user.target.wants/httpd.service
Este comando nos devuelve que el servicio httpd se encuentra bajo multi-user.target lo que viene siendo el runlevel 3
de SysV. En los siguientes apartados conoceremos los distintos target que de algn modo tienen similitud con los
runlevels de SysV
Nota: Podramos haber omitido el subdirectorio /httpd.service para conocer la lista completa de targets y sus unit
(mount, service, socket)
Podemos hacerlo de una forma inversa (para lo cual hay que conocer el target), es decir ver que servicios estn
ejecutndose para un target concreto:
Adems de los comandos de la tabla tambin podemos ver las units de servicios que tenemos cargados en el
sistema con el comando:
Con este comando veremos que servicios estn cargados y adems si estn activos o muertos a parte de una
pequea descripcin.
Nota: Podemos cambiar service por mount, socket, device para listar otros tipos (-t) de units.
Si en vez de ver las units cargadas queremos ver cuantas hay instaladas (es decir aquellas que tienen archivos de
configuracin instalados en nuestro sistema y por lo tanto estn disponibles):
Nota: Podemos cambiar el tipo de unit o directamente omitir el parmetro -t y listar todas.
Sugerencia: Puede utilizar las siguientes rdenes systemctl con el parmetro -H usario@host para controlar una
instancia de systemd en una mquina remota. Esto utilizar SSH para conectarse a la instancia systemd remota.
Target
systemd utiliza target en vez de runlevels (0123456) que reciben un nombre (en vez de un nmero) para identificar
un propsito especfico, con la posibilidad de realizar ms de una accin al mismo tiempo. Algunos targets pueden
heredar todos los servicios de otro target e implementarse con servicios adicionales. La siguiente tabla muestra la
similitud entre algunos de los target con los runlevels de SysV:
Nota: Actualmente no existen target similares a los runlevels 2 y 4 de SysV, pero podramos definirlos nosotros
mismos.
systemd tambin nos permite cambiar el target predeterminado e incluso aadir nuevos servicios a otros target, pero
antes de esto, es importante dejar claro algunos de los directorios de los que hace uso systemd:
Los archivos unit (archivos de configuracin de service, mount, device) se encuentran en:
/usr/lib/systemd/system/ o /etc/systemd/system/
Los target (runlevels) igualmente pueden situarse en ambos directorios
Los directorios *.wants (ubicados igualmente en ambos directorios) contienen los enlaces simblicos que
apuntan a determinados servicios, sern estos servicios los que se ejecuten con el target al que corresponde
dicho directorio wants, recordar que si un target precisa de otro, tambin sern cargados los servicios de este
otro target.
Nota: Los archivos unit de /etc/systemd/system tienen una mayor precedencia sobre archivos unidad de
/lib/systemd/system
El efecto de esta orden crea un enlace simblico (/etc/systemd/system/default.target) que apunta a nuestro
mylevel.target. Esto solo funciona si hemos aadido la etiqueta [Install] al archivo, de la siguiente manera:
[Install]
Alias=default.target
Tambin podemos aadir o quitar nuevos servicios a un target determinado, bastar con crear nuevos enlaces
simblicos dentro del directorio *.wants del target de arranque (o de algunos de los que dependa) apuntando a los
servicios deseados.
Otra forma de modificar el target de inicio es a travs de los parmetros que le pasamos al kernel en el archivo de
configuracin del gestor de arranque aadiendo por ejemplo systemd.unit=multi-user.target para arrancar en
nivel3
Journal
journal es un componente mas de systemd, que capta los mensajes syslog, los mensajes de registro del kernel, los
del disco RAM inicial y los mensajes de arranque iniciales, as como mensajes escritos en stdout y stderr de todos
los servicios, haciendo que estn disponible para el usuario. Se puede utilizar en paralelo, o en lugar de un demonio
syslog tradicional, como rsyslog o syslog-ng.
Hasta Fedora 18 (e inclusive a da de hoy, Enero del 2015, en Centos7) el registro de journal se almacena de forma
voltil en /run/log/journal por lo que ser eliminado tras un reinicio. La intencin es que venga configurado por
defecto de manera que sea un registro persistente y con directorio principal /var/log/journal (que no venga por
defecto no quiere decir que no lo podamos configurar de tal modo).
Una de las razones por las que syslog comenzaba a quedarse anticuado es la necesidad por ejemplo de mostrar
las ltimas lneas del registro de un determinado servicio en el momento de preguntar por su estado (con systemctl),
esto necesita que archivos de registro sean descomprimido en tiempo real y a la vez mostrado, algo que con syslog
se haca casi imposible y adems, ineficiente y poco seguro.
Hasta ahora nos haremos la idea de que journal es el sustituto de syslog, el cual nos permite filtrar la salida del
registro por campos, dejar el registro de forma voltil o volverlo persistente mediante su archivo de configuracin
(/etc/systemd/journald.conf), darle un tamao mximo al fichero de registro, permite la compatibilidad con el
antiguo syslog mediante el socket /run/systemd/journal/syslog (tendremos que asociar syslog a este socket y no a
/dev/log, el paquete syslog-ng proporciona automticamente la configuracin necesaria), reenviar la salida del
registro a una terminal, etc
COMANDO SYSTEMCTL
systemctl: Nos permite controlar el demonio systemd y con ello llevar a cabo una eficaz administracin de los
servicios.
Opciones:
Comandos:
shutdown, poweroff, halt, reboot: Estos comandos son equivalentes a init 0 e init 6. La mejor forma de apagar el
sistema es con shutdown. Adems este permite una gran variedad de opciones.
Opciones:
Detener el sistema: -H
Apagar el sistema: -P
Apagar el sistema (equivalente a -P a menos que -H haya sido especificada): -h
Reiniciar el sistema: -r
Cancelar una tarea de shutdown pendiente: -c
No enviar mensajes despus de ejecutar la orden shutdown: no-wall
Ejemplos:
Puedes ampliar la informacin aqu dada, e incluso conocer otras funcionalidades o aspectos de systemd como:
https://fedoraproject.org/wiki/Systemd/es
https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/es
https://wiki.archlinux.org/index.php/Systemd_%28Espa%C3%B1ol%29
https://wiki.ubuntu.com/SystemdForUpstartUsers
https://wiki.archlinux.org/index.php/Systemd
Anuncios
Share this:
Me gusta
2 bloggers like this.
Relacionado
ETIQUETAS: GNU/LINUX
7 comentarios
Romi RESPONDER
ABRIL 11, 2017 EN 15:12
Me gusta
nebul4ck RESPONDER
ABRIL 12, 2017 EN 11:52
Ests seguro que la versin de la distribucin que ests utilizando tiene systemd activado?
Me gusta
Romin
ABRIL 12, 2017 EN 12:12
Me gusta
nebul4ck
MAYO 11, 2017 EN 09:19
sudo apt-get update && sudo apt-get install systemd && sudo apt-get install
systemd-sysv
Lo siento por el retraso pero estoy que no doy para mas jejejejej.
Saludos
Me gusta
Me gusta
nebul4ck RESPONDER
DICIEMBRE 7, 2016 EN 10:28
De nada!!
Me gusta
[] Sobre systemd: Mejoras en systemd, Units y Targets; uso de systemctl, compatibilidad con SysV febrero 11,
2015 []
Me gusta