Anda di halaman 1dari 15

INICIO HOW TOs SCRIPTS CERTIFICACIONES SOBRE M LIBROS GNU/LINUX RECOMENDADOS

#4SYSADMINS Buscar buscar

GNU/LINUX & MS WINDOWS

INICIO GNU/LINUX SOBRE SYSTEMD: MEJORAS EN SYSTEMD, UNITS Y TARGETS; USO DE SYSTEMCTL, COMPATIBILIDAD CON SYSV

Sobre systemd: Mejoras en systemd, Units y


Targets; uso de systemctl, compatibilidad
con SysV
CATEGORAS

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

Configurar GRUB agosto 29,


informarme y aprender, para perder el miedo ante lo desconocido pudiendo as, basarme en mi propia experiencia y
2016 poder sacar mis propias conclusiones.
Configurar servicio IP pblica
Importante: Si eres de los que est buscando el uso concreto del comando sin importar que es y como utilizarlo (o
esttica en casa agosto 25, 2016
porque ya lo sabes), te aconsejo que te deslices hasta el final del artculo.
Docker agosto 12, 2016
LXC: Linux Container agosto 12,
2016 Que es systemd?
Cgroups Linux agosto 12, 2016
Sistema y administrador de servicios para Linux, compatible con scripts de inicio SysV. Systemd hace uso de la
Namespace Linux agosto 12,
paralelizacin agresiva, socket y activacin D-Bus para iniciar los servicios. Ofrece la puesta en marcha de demonios
2016
Configurar iSCSI en Linux agosto bajo demanda, realiza el seguimiento de procesos utilizando Linux cgroups, soporta copia instantnea de volumen y
11, 2016 la restauracin de estado del sistema, mantiene puntos de montaje y automontaje e implementa un elaborado
Almacenamiento iSCSI en Linux servicio lgico de control transaccional basado en la dependencia.
agosto 11, 2016
Vamos a desglosar un poco esta definicin:

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:

Se ha mejorado sustancialmente la velocidad de inicializacin del sistema


#4sysadmins por nebul4ck systemd asume que cualquier dispositivo puede ser conectado o desconectado en cualquier momento
se distribuye bajo una Licencia
(hotplug)
Creative Commons Atribucin-
NoComercial-CompartirIgual 4.0
systemd utiliza la activacin de daemons por medio de sockets, aportando capacidades de paralelizacin
Internacional. Una de sus caractersticas es el registro (journal) mediante cgroups de todos los servicios y procesos
iniciados
systemd es modular, esto quiere decir que se han elaborado una sere de paquetes en los que varios
servicios son administrados de forma conjunta

Que son las Units / Unidades de Servicios?


systemd inicia y supervisa todo el sistema y se basa en la nocin de unidades, compuestas de un nombre (el nombre
del demonio) y una extensin. Ser la extensin la que indique de que tipo de unidad se trata. Adems cada unidad
tiene su correspondiente archivo de configuracin cuyo nombre es idntico. Un ejemplo sera el servicio
httpd.service cuyo archivo de configuracin sera httpd.service. Los archivos de unidades disponibles en nuestro
sistema podemos encontrarlos en /usr/lib/systemd/system/ y /etc/systemd/system/

Nota: Los archivos bajo el directorio /etc/systemd/system/ prevalecern en caso de duplicados.


Existen siete tipos diferentes de unidades:

service: Demonios que pueden ser iniciados, detenidos, reiniciados o recargados.


socket: Esta unidad encapsula un socket en el sistema de archivos o en Internet. Cada unidad socket tiene
una unidad de servicio correspondiente.
device: Esta unidad encapsula un dispositivo en el rbol de dispositivos de Linux.
mount: Esta unidad encapsula un punto de montaje en la jerarqua del sistema de archivos.
automount: Encapsula un punto de montaje automtico. Cada unidad automount tiene una unidad mount
correspondiente, que se inicia al acceder al directorio de automontaje.
target: Utilizada para la agrupacin lgica de unidades. Referencia a otras unidades, que pueden ser
controladas conjuntamente, un ejemplo sera multi-user.target, que bsicamente desempea el papel de nivel
de ejecucin 3 en el sistema clsico SysV.
snapshot: Similar a las unidades target.

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

Compatibilidad de systemd con SysV


systemd al igual que Upstart ofrece compatibilidad con SysV (comando service y chkconfig) para aquellos servicios
que aun soportan o funcionan nicamente con scripts de inicio SysV (actualmente en 2015, son pocos los servicios
comunes que corren bajo SysV). Upstart pese a mantener compatibilidad con los comandos service y chkconfig de
SysV implement su propia utilidad para la administracin de servicios, de igual modo systemd lo hace con su
herramienta systemctl

#systemctl stop nombreservicio.service

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):

#systemctl enabled httpd.service

Listar todas las unidades de servicios instaladas (algo parecido a chkconfig list)

#systemctl list-unit-files
O solo aquellas que se encuentran en activadas:

#systemctl list-units o #systemctl

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.

Nota: Consulte man systemd.unit para ms detalles.

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:

#systemctl show -p Wants multi-user.target

Adems de los comandos de la tabla tambin podemos ver las units de servicios que tenemos cargados en el
sistema con el comando:

#systemctl -t service list-units all

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):

#systemctl -t service list-unit-files all

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.

Existen otros target que podremos ver con el comando:

#systemctl list-units type=target

Podemos cambiar de target (o modo de ejecucin) actual con el comando:

# systemctl isolate graphical.target

Nota: Esto podra ser equivalente a la orden #telinit 5 de SysV

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

Quieres cambiar el target (runlevel) predeterminado de arranque?


El target /etc/systemd/system/default.target es el target predeterminado de arranque, es un enlace simblico que
por defecto apunta a /lib/systemd/system/graphical.target por lo que para cambiar de target de arranque, bastar
con eliminar dicho link y crear uno nuevo apuntando al nuevo target.
Si quisiramos podramos crear un target desde 0 a nuestro gusto y darle un nombre (mylevel.target) y a
continuacin habilitarlo:

# systemctl enable mylevel.target

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.

systemctl [opciones] comando [opciones del comando]

Opciones:

Indicar el tipo de target: -t (type=TARGET)


Filtrar la salida en funcin del estado: state=LOAD|SUB|ACTIVE
Filtrar por las propiedades de unidad/servicio/trabajo: -p (property=)
Mostrar todas las unidades/servicios/job cargados: -a (all)
Si filtramos por socket, podemos indicar de que tipo de socket se trata: show-types
Si vamos a habilitar una unidad, podemos sobreescribir su enlace: -f

Comandos:

Listar las unidades conocidas (opcin por defecto): list-units


Listar las unidades instaladas: list-unit-files
Listar sockets: list-sockets
Iniciar, Detener, Recargar (tipo smb.conf), Reiniciar y Estado de los servicios: start, stop, reload y restar
(respectivamente)
Inicia la unit indicada (y sus dependencias) y detiene el resto. Esto es parecido a cambiar de runlevel: isolate
Entrar al modo por defecto (parecido a isolate pero sin especificar el target): default
Entrar en modo de rescate: rescue
Entrar en modo de emergencia: emergency
Cerrar la sesin y apagar el sistema: halt
Apagar el sistema (como si quitamos el cable de corriente): poweroff
Reiniciar el sistema: reboot
Entrar en modo suspensin: suspend
Hibernar el equipo: hibernate
Comprobar si una unit se encuentra en ejecucin: is-active
Comprobar si una unit est en estado failed: is-failed
Mostrar las propiedades de una unit: show
Mostrar las dependencias de una unit (si no especificamos una en concreto se toma default.target): list-
dependencies
Habilitar / Deshabilitar una unit: enable , disable
Comprobar si una unidad est habilitada: is-enabled
Resetear una unit: preset
Mostrar el runlevel (target) que tenemos por defecto para iniciar el sistema: get-default
Setear el target con el que queremos arrancar el sistema: set-default
Listar los trabajos (Jobs) que estn activos: list-jobs
Cancelar un trabajo: cancel
Recargar el archivo de una unidad (httpd.service): daemon-reload

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.

shutdown [opcion] argumento [mensaje]

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:

Apagar el sistema a las 01:30 AM y adems enva un mensaje

# shutdown -h 1:30 A las 1:30 de la madrugada el sistema va a ser apagado

Cancelamos la accin anterior, pues nos hemos equivocado de hora:

# shutdown -c Perdonar el sistema no va a ser apagado, quizs a las 13:30,


pero avisaremos. Disculpen
NOTAS:
Podremos descargar systemd desde la siguiente pgina oficial: http://www.freedesktop.org/software/systemd/ o bien
consultar su documentacin oficial http://freedesktop.org/wiki/Software/systemd/

Puedes ampliar la informacin aqu dada, e incluso conocer otras funcionalidades o aspectos de systemd como:

Caractersticas de systemd (ampliadas)


Lnea de comandos de arranque del Kernel
Cambiar el nmero de gettys por defecto
Personalizar un archivo unidad o agregar uno personalizado
Inicio de sesin automtico en una terminal
Implementacin readahead (lectura anticipada)
Escribir archivos .service personalizados
Archivos temporales y temporizadores

a travs de algunos sitios:

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:

Twitter Facebook 1 Google LinkedIn Imprimir

Me gusta
2 bloggers like this.

Relacionado

El comando systemctl: Activar o desactivar servicios al Inicializar el sistema con SysV o


administrando systemd arranque GNU/Linux Upstart
En "GNU/Linux" En "GNU/Linux" En "GNU/Linux"

ETIQUETAS: GNU/LINUX

BY NEBUL4CK IN GNU/LINUX, HOW TO ON FEBRERO 11, 2015.

CANT READ SUPERBLOCK: RECUPERANDO UNA PARTICIN EXT LPIC-1 CAPTULO 7

7 comentarios

Romi RESPONDER
ABRIL 11, 2017 EN 15:12

Cuando ingreso systemctl me aparece:


bash:systemctl: no se encontr la orden

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

La verdad no s, me podras indicar como reviso si esta activo o no?


Estoy atenta gracias

Me gusta

nebul4ck
MAYO 11, 2017 EN 09:19

Pues con este comando podras ver si est instalado:

sudo dpkg -l |grep systemd

Podras instalarlo con:

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

Alex del Pozo Peralta RESPONDER


DICIEMBRE 5, 2016 EN 11:33
Gran documento. Gracias por el aporte

Me gusta

nebul4ck RESPONDER
DICIEMBRE 7, 2016 EN 10:28

De nada!!

Me gusta

El comando systemctl: administrando systemd #4sysadmins RESPONDER


FEBRERO 27, 2015 EN 09:41

[] Sobre systemd: Mejoras en systemd, Units y Targets; uso de systemctl, compatibilidad con SysV febrero 11,
2015 []

Me gusta

Deja un comentario, Gracias!

Introduce aqu tu comentario...

Crea un blog o un sitio web gratuitos con WordPress.com.

Anda mungkin juga menyukai