Use o systemd ele já inclui suporte para sessões do usuário, na verdade você já deve depender dele (involuntariamente).
Crie o diretório de serviços
mkdir -p $HOME/.local/share/systemd/user
Crie editar um arquivo de serviço (vim, gedit, geany - o que você quiser)
vim $HOME/.local/share/systemd/user/my.service
Deveria ser mais ou menos assim, se for um serviço permanente.
[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target
Mas parece que você prefere acioná-lo uma vez e, em seguida, ser bom com isso, então use uma configuração específica 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
Isso pressupõe que seu script seja executável, por exemplo:
chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script
Se você precisasse preceder o caminho para o respectivo intérprete:
ExecStart=/bin/bash /path/to/start/script arguments
Agora recarregue o systemd (e faça o login novamente para testar)
systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log
Se precisar de mais informações, consulte o Arch-Wiki , por exemplo. Este thread askubuntu tem várias idéias, incluindo incidentalmente, meu.
Você pode estender o comportamento (se você for root) a outros usuários definindo o serviço globalmente. Para fazer isso, você precisaria criar o arquivo de serviço em / usr / share / systemd / user / não em $ HOME / .local / share / systemd / user .