Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| info:cursos:pue:ethical-hacker:extras:sincara-systemd [27/02/2025 02:11] – [Componentes principales] mate | info:cursos:pue:ethical-hacker:extras:sincara-systemd [28/02/2025 03:51] (actual) – [Logs] admin | ||
|---|---|---|---|
| Línia 164: | Línia 164: | ||
| * Esto hace que sea fácil cambiar entre implementaciones de unidades estándar y personalizadas. | * Esto hace que sea fácil cambiar entre implementaciones de unidades estándar y personalizadas. | ||
| + | == Estados de las Unidades | ||
| + | * Hay cinco estados en los que puede estar una unidad: **inactive**, | ||
| + | * Por defecto, las unidades son **inactive**. | ||
| + | * Cuando systemd inicia una unidad, el estado cambia a **activating** | ||
| + | * y una vez que finaliza el inicio se marca como **active**. | ||
| + | * Luego permanece en este estado hasta que se detiene, ya sea por sí mismo (por ejemplo, si el ejecutable de un servicio finaliza) o si systemd le indica que se detenga. Luego, el estado cambia a **deactivating**, | ||
| + | * Y si algo sale mal, el estado es **failed**. | ||
| + | * 🇬🇧 https:// | ||
| + | |||
| + | == Archivos de configuración | ||
| + | * Orden de preferencia de directorios, | ||
| + | * ** / | ||
| + | * **/ | ||
| + | * **/ | ||
| + | * **Comandos relacionados** | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * **Drop-in files**: Si queremos añadir un fichero que solo modifique algún parámetro en concreto, lo podemos hacer con el siguiente comando: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | == Creación de tus propias unidades | ||
| + | * Puedes agregar tus propios servicios para ejecutar acciones o scripts creando ficheros con extensión **.service**. | ||
| + | * Todas las opciones dentro de las unidades, se explican en '' | ||
| + | * '' | ||
| + | * <code properties> | ||
| + | [Unit] | ||
| + | Description=CUPS Scheduler | ||
| + | Documentation=man: | ||
| + | After=network.target nss-user-lookup.target nslcd.service | ||
| + | Requires=cups.socket | ||
| + | |||
| + | [Service] | ||
| + | ExecStart=/ | ||
| + | Type=notify | ||
| + | Restart=on-failure | ||
| + | |||
| + | [Install] | ||
| + | Also=cups.socket cups.path | ||
| + | WantedBy=printer.target multi-user.target | ||
| + | </ | ||
| + | === Secciones dentro de los ficheros de configuración | ||
| + | * **[Unit]**: Define directivas específicas de la definición de la unit | ||
| + | * **[Install]**: | ||
| + | * **[Service]**: | ||
| + | * Type | ||
| + | * **Type=simple** (default): El servicio se inicia inmediatamente. El proceso no debe bifurcarse. No utilice este tipo si otros servicios necesitan ser ordenados en este servicio, a menos que esté activado por socket. | ||
| + | * **Type=idle**: | ||
| + | * **Type=notify**: | ||
| + | * **Type=oneshot**: | ||
| + | * **Type=forking**: | ||
| + | * **Type=dbus**: | ||
| + | * **[Socket]**: | ||
| + | * **[Mount]** y **[Automount]**: | ||
| + | * **[Swap]**: Directivas que definen y habilitan espacios de intercambio para páginas de memoria virtual anónimas | ||
| + | * **[Timer]**: | ||
| + | * **[Path]**: Monitorización del sistema de archivos | ||
| + | * **[Slice]**: | ||
| + | |||
| + | === Particularidades de configuración | ||
| + | * Si en la sección **ExecStart** el binario empieza con un " | ||
| + | * Si en la sección **EnvironmentFile** el fichero empieza con un " | ||
| + | |||
| + | === Ficheros y entorno | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === Dependencias | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | == Entorno | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * https:// | ||
| + | |||
| + | == Targets | ||
| + | * **Target = runlevel**: SystemD llama targets a los runlevels de SysV, y existen equivalencias entre ambos sistemas. Se pueden ver referenciadas en los ficheros de configuración de unidades en el campo WantedBy=. | ||
| + | * 0 = **shutdown.target**, | ||
| + | * **halt.target** para el sistema, pero no apaga el hardware | ||
| + | * S = **emergency.target** | ||
| + | * 1 = **rescue.target** | ||
| + | * 3 = **multi-user.target** | ||
| + | * 5 = **graphical.target** | ||
| + | * 6 = **reboot.target** | ||
| + | * **default.target** es un link a **multi-user.target** o **graphical.target** | ||
| + | * '' | ||
| + | * También existen desde **runlevel0.target** a **runlevel6.target** | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | == Sockets | ||
| + | * Para cada unidad de tipo socket, debe existir una unidad de tipo servicio correspondiente | ||
| + | * Opciones | ||
| + | * **ListenStream**: | ||
| + | * **Accept**: si es true, la instancia del servicio se lanza por cada conexión; si es false, la encargada de gestionar todas las conexiones es una instancia. | ||
| + | * **MaxConnections**: | ||
| + | * **Service**: | ||
| + | * '' | ||
| + | * https:// | ||
| + | * '' | ||
| + | * '' | ||
| + | * https:// | ||
| + | |||
| + | == Timers | ||
| + | * Para cada archivo **.timer**, existe un archivo **.service** coincidente (por ejemplo, foo.timer y foo.service). | ||
| + | * El archivo **.timer** activa y controla el archivo **.service**. | ||
| + | * El archivo **.service** no requiere una sección **[Install]** ya que son las unidades de temporizador las que se activan. | ||
| + | * Si es necesario, es posible controlar una unidad con un nombre diferente usando la opción Unit= en la sección [Timer] del archivo temporizador. | ||
| + | * '' | ||
| + | * '' | ||
| + | * Si un temporizador se **desincroniza**, | ||
| + | * Frecuencias con el parámetro OnCalendar (funciona igual que el cron) | ||
| + | * **Realtime timers** (a.k.a. wallclock timers) **Temporizadores en tiempo real** (también conocido como «wallclock timers») se activan con un evento del calendario, de la misma manera que lo hacen los cronjobs. La opción OnCalendar= se utiliza para definirlos. | ||
| + | * DayOfWeek | ||
| + | * Con el DayOfWeek siendo opcional. Los operadores '' | ||
| + | * ~ indica el último día del mes | ||
| + | * OnCalendar=Mon -*-10..27 05:30:00 | ||
| + | * minutely # Cada minuto | ||
| + | * hourly | ||
| + | * daily # una vez al día a medianoche. | ||
| + | * weekly | ||
| + | * monthly # una vez al mes a la medianoche del primer día del mes. | ||
| + | * yearly | ||
| + | * quarterly # trimestral | ||
| + | * semiannually # semianual | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Monotonic timers - Temporizadores monotónicos se activan después de un intervalo de tiempo condicionado a un punto de inicio variable. Se detienen si el equipo está temporalmente suspendido o apagado. Hay varios temporizadores monotónicos diferentes | ||
| + | * **OnActiveSec**= Defines a timer relative to the moment the timer unit itself is activated. | ||
| + | * **OnBootSec**= Defines a timer relative to when the machine was booted up. In containers, for the system manager instance, this is mapped to OnStartupSec=, | ||
| + | * **OnStartupSec**= Defines a timer relative to when the service manager was first started. For system timer units this is very similar to OnBootSec= as the system service manager is generally started very early at boot. It's primarily useful when configured in units running in the per-user service manager, as the user service manager is generally started on first login only, not already during boot. | ||
| + | * **OnUnitActiveSec**= Defines a timer relative to when the unit the timer unit is activating was last activated. | ||
| + | * **nUnitInactiveSec**= Defines a timer relative to when the unit the timer unit is activating was last deactivated. | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Puede cambiar la frecuencia de su trabajo programado, modificando el valor OnCalendar y luego escribiendo el comando systemctl daemon-reload | ||
| + | * Ejemplos | ||
| + | * <code properties / | ||
| + | Description=Update the plocate database daily | ||
| + | |||
| + | [Timer] | ||
| + | OnCalendar=daily | ||
| + | RandomizedDelaySec=1h | ||
| + | AccuracySec=6h | ||
| + | Persistent=true | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=timers.target | ||
| + | </ | ||
| + | * <code properties / | ||
| + | Description=Update the plocate database | ||
| + | ConditionACPower=true | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=/ | ||
| + | LimitNOFILE=131072 | ||
| + | IOSchedulingClass=idle | ||
| + | |||
| + | PrivateTmp=true | ||
| + | PrivateDevices=true | ||
| + | PrivateNetwork=true | ||
| + | </ | ||
| + | * Unidades .timer transitorias (equivalentes a at) | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Información sobre los timers | ||
| + | * https:// | ||
| + | * '' | ||
| + | |||
| + | == Mount | ||
| + | * **/ | ||
| + | * El script systemd-fstab-generator(8) traduce todas las entradas presentes en /etc/fstab en unidades de systemd, esto se realiza en el momento del arranque y cada vez que se vuelve a cargar la configuración del gestor del sistema. | ||
| + | * En un disco particionado con GPT, el script systemd-gpt-auto-generator(8) montará particiones siguiendo la especificación de particiones detectables , por lo tanto, las mismas se pueden omitir de fstab. | ||
| + | * El nombre del unit file guarda relación con el punto de montaje del sistema de archivos. Si el punto de montaje es **/ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | == Automount | ||
| + | * Los automounts en systemd son un tipo de unidad que permite montar automáticamente sistemas de archivos en un directorio determinado cuando este es accedido por primera vez, y desmontarlos cuando ya no son necesarios. | ||
| + | * Para cada automount en systemd es necesario tener un mount correspondiente. | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | MATE EXTRA: [[https:// | ||
| + | |||
| + | == PATH | ||
| + | * https:// | ||
| + | * systemctl list-paths # | ||
| + | |||
| + | |||
| + | == Temporales | ||
| + | * Hay varios servicios que crean o borran ficheros o directorios: | ||
| + | * systemd-tmpfiles-clean.service | ||
| + | * systemd-tmpfiles-setup-dev.service | ||
| + | * systemd-tmpfiles-setup.service | ||
| + | * systemctl cat systemd-tmpfiles-setup.service # Para su configuración | ||
| + | == Configuración | ||
| + | * Los archivos de configuración se almacenan en los siguientes directorios: | ||
| + | * / | ||
| + | * / | ||
| + | * / | ||
| + | * Los archivos de configuración se proporcionan normalmente junto con los archivos de servicio, y reciben su nombre en el estilo / | ||
| + | * '' | ||
| + | * q /tmp 1777 root root 10d | ||
| + | * q /var/tmp 1777 root root 30d | ||
| + | * '' | ||
| + | * Para ver la sintaxis de la creación, borrado o gestión de los temporales: | ||
| + | * 🇬🇧 https:// | ||
| + | * man 5 tmpfiles.d # Para verlo en local | ||
| + | * Si hacemos un cambio en algún fichero, no lo va a ver hasta que rebotemos el sistema, o hasta que ejecutemos los siguientes comandos: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Es posible especificar las tres opciones juntas en una sola orden. En ese caso, '' | ||
| + | * Los usuarios pueden tener sus propios ficheros temporales, definidos en el siguiente directorio: | ||
| + | * **~/ | ||
| + | * '' | ||
| + | * '' | ||
| + | * Uso | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Información general | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * 🇬🇧 https:// | ||
| + | |||
| + | == Seguridad, monitorización, | ||
| + | * https:// | ||
| + | * 🇬🇧 https:// | ||
| + | * 🇬🇧 https:// | ||
| + | |||
| + | === Arranque | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * 🇬🇧 https:// | ||
| + | |||
| + | === Monitorización | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === Logs | ||
| + | == journalctl | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * Ejemplos de comandos: | ||
| + | * journalctl -u ruiz-tapiador.service # Mensajes generados por el servicio y por SystemD | ||
| + | * journalctl UNIT=ruiz-tapiador.service # Mensajes generados por SystemD (arranque del servicio, parada, etc...) | ||
| + | * journalctl _SYSTEMD_UNIT=ruiz-tapiador.service # Mensajes generados por el propio servicio (problemas al cargar algo, errores..) | ||
| + | * journalctl -p emerg..err # Mensajes con prioridad entre emerg y err | ||
| + | * journalctl -p 0..4 # Mensajes con prioridad entre emerg y err | ||
| + | * journalctl -p 4 # Mensajes con prioridad entre emerg y err | ||
| + | * journalctl -p 4..4 # Mensajes con prioridad err | ||
| + | * Colores de las prioridades: | ||
| + | * 3-0 - rojo | ||
| + | * 4 - amarillo | ||
| + | * 5 - blanco en negrita | ||
| + | * 6 - blanco | ||
| + | * 7 - gris | ||
| + | * | ||