GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So starten Sie einen systemd-Dienst nach der Benutzeranmeldung und stoppen ihn vor der Benutzerabmeldung

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 .


Linux
  1. Dienste auf systemd RHEL 7 Linux-Server starten, stoppen und neu starten

  2. So starten, stoppen und starten Sie Dienste auf einem dedizierten Linux-Server

  3. Wie führe ich einen Befehl vor der Benutzeranmeldung unter Linux aus?

  4. Wie ändere ich den Benutzer für eine Reihe von Systemd-Dienstdateien?

  5. Crond Daemon unter Linux starten, stoppen und neu starten

So starten, stoppen oder starten Sie Apache neu

So starten, stoppen oder starten Sie Nginx neu

Wie man Dienste unter Debian startet, stoppt und neu startet

Wie ich gelernt habe, mir keine Sorgen mehr zu machen und systemd zu lieben

So starten, stoppen und starten Sie Dienste in Debian 10 neu

So starten, stoppen oder starten Sie Netzwerkdienste unter Rocky Linux 8