GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit službu systemd po přihlášení uživatele a zastavit ji před odhlášením uživatele

Použít systemd již obsahuje podporu pro uživatelské relace, ve skutečnosti byste na ní měli být již závislí (nevědomky).

Vytvořte adresář služeb

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

Vytvořte a upravte soubor služby (vim, gedit, geany – cokoli chcete)

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

Pokud se jedná o trvalou službu, měla by vypadat zhruba takto.

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

Ale zní to, jako byste to raději chtěli spustit jednou a pak s tím být dobrý, takže raději použijte jednorázovou konfiguraci, jako je tato:

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

To samozřejmě předpokládá, že váš skript je spustitelný, tj.:

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

Jinak byste museli předřadit cestu k příslušnému interpretu:

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

Nyní znovu načtěte systemd (a znovu se přihlaste kvůli testování)

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

Pokud potřebujete více informací, podívejte se například na Arch-Wiki. Toto vlákno askubuntu má různé nápady, mimochodem včetně mých.

Chování (pokud jste root) můžete rozšířit na další uživatele globálním definováním služby. Chcete-li to provést, musíte vytvořit soubor služby v /usr/share/systemd/user/ není v $HOME/.local/share/systemd/user .


Linux
  1. Spuštění, zastavení a restartování služeb na systémovém serveru RHEL 7 Linux

  2. Jak spustit, zastavit a restartovat služby na dedikovaném serveru Linux

  3. Jak spustit, zastavit a restartovat službu Zimbra

  1. Jak zastavit a zakázat službu ClamAV z CentOS?

  2. Spusťte, zastavte a restartujte Crond Daemon v Linuxu

  3. Systemd:Použití After a Requires

  1. Jak spustit a zastavit OSWatcher

  2. Jak zastavit službu systemd

  3. Jak řeknu v servisním souboru systemd, když je USB připraveno?