Systemd verwenden Es enthält bereits Unterstützung für Benutzersitzungen, tatsächlich sollten Sie sich bereits darauf verlassen (unwissentlich).
Erstellen Sie das Dienstverzeichnis
mkdir -p $HOME/.local/share/systemd/user
Erstellen und bearbeiten Sie eine Dienstdatei (vim, gedit, geany - was immer Sie wollen)
vim $HOME/.local/share/systemd/user/my.service
Es sollte ungefähr so aussehen, wenn es sich um einen dauerhaften Dienst handelt.
[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target
Aber es hört sich so an, als ob Sie es lieber einmal auslösen und dann gut damit umgehen möchten, also verwenden Sie lieber eine Oneshot-Konfiguration wie diese:
[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target
Dies setzt natürlich voraus, dass Ihr Skript ausführbar ist, also:
chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script
Andernfalls müssten Sie dem jeweiligen Interpreter den Pfad voranstellen:
ExecStart=/bin/bash /path/to/start/script arguments
Laden Sie jetzt systemd neu (und melden Sie sich zum Testen erneut an)
systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log
Wenn Sie weitere Informationen benötigen, lesen Sie zum Beispiel das Arch-Wiki. Dieser Askubuntu-Thread hat verschiedene Ideen, darunter übrigens auch meine.
Sie können das Verhalten (wenn Sie root sind) auf andere Benutzer ausdehnen, indem Sie den Dienst global definieren. Dazu müssten Sie die Dienstdatei in /usr/share/systemd/user/ erstellen nicht in $HOME/.local/share/systemd/user .