GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo iniciar un servicio systemd después del inicio de sesión del usuario y detenerlo antes de que el usuario cierre la sesión

Usar systemd ya incluye soporte para sesiones de usuario, de hecho ya deberías depender de él (sin saberlo).

Crear el directorio de servicios

mkdir -p $HOME/.local/share/systemd/user

Cree y edite un archivo de servicio (vim, gedit, geany, lo que quiera)

vim $HOME/.local/share/systemd/user/my.service

Debería verse más o menos así, si se trata de un servicio permanente.

[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target

Pero parece que prefieres activarlo una vez y luego ser bueno con él, así que usa una configuración única como esta:

[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target

Por supuesto, esto supone que su secuencia de comandos es ejecutable, es decir:

chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script

De lo contrario, deberá anteponer la ruta al intérprete respectivo:

ExecStart=/bin/bash /path/to/start/script arguments

Ahora vuelva a cargar systemd (y vuelva a iniciar sesión por el bien de la prueba)

systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log

Si necesita más información, consulte Arch-Wiki, por ejemplo. Este hilo de askubuntu tiene varias ideas, incluida, por cierto, la mía.

Puede extender el comportamiento (si es root) a otros usuarios definiendo el servicio globalmente. Para hacer esto, deberá crear el archivo de servicio en /usr/share/systemd/user/ no en $HOME/.local/share/systemd/user .


Linux
  1. Servicios de inicio, detención y reinicio en el servidor systemd RHEL 7 Linux

  2. Cómo iniciar, detener y reiniciar servicios en un servidor dedicado Linux

  3. Cómo iniciar y detener OSWatcher

  4. Systemd:Uso de After y Requires

  5. En el archivo de servicio systemd, ¿cómo digo después de que el USB esté listo?

Cómo iniciar, detener o reiniciar Apache

Cómo iniciar, detener o reiniciar Nginx

Cómo iniciar, detener y reiniciar servicios en Debian

Cómo aprendí a dejar de preocuparme y amar systemd

Cómo iniciar, detener y reiniciar servicios en Debian 10

Cómo iniciar, detener o reiniciar servicios de red en Rocky Linux 8