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 .