GNU/Linux >> Znalost Linux >  >> Linux

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

Ještě jsem to neřešil, ale zdá se, že by to mohlo být vhodné pro "aktivaci založenou na cestě".

Místo klauzule "After=" v souboru služby byste vytvořili .path soubor, jak je popsáno v man systemd.path .

Najděte vhodný soubor pod /dev/bus/usb nebo /sys/bus/usb , jehož přítomnost indikuje, že „USB je aktivní“. Pak mějte systemd sledujte cestu k souboru pomocí .path soubor, který vytvoříte. .path soubor by pak aktivoval váš .service soubor, když soubor existuje.


Co bych udělal, je vytvořit systemd device unit pomocí pravidla udev. Např.:vytvořte /etc/udev/rules.d/20-usb-bus.rules s:

KERNEL=="usb[1-2]", TAG+="systemd"

Při příštím spuštění (nebo opětovném načtení pravidel udev) nyní budete mít jednotku systémového zařízení:

# systemctl status dev-bus-usb-001-001.device
● dev-bus-usb-001-001.device - 2.0 root hub
...
# systemctl status dev-bus-usb-002-001.device
● dev-bus-usb-002-001.device - 3.0 root hub
...

Nyní můžete spustit službu, jakmile bude sběrnice USB připravena, přidáním:

[Unit]
...
After=dev-bus-usb-001-001.device dev-bus-usb-002-001.device

do vaší služby systemd.


Linux
  1. Spustit službu Systemd po automatickém připojení, ale poté, co k ní přistoupíte?

  2. Jak přesměrovat výstup služby systemd do souboru

  3. Jak zastavit službu systemd

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

  2. přesměrovat protokoly služeb systemd do souboru

  3. Systém odmítá SSH a po instalaci systemd se zasekl při 'bootování'

  1. Systemd Unit File - WantedBy a After

  2. Jak zjistit USB verze 1.1 nebo 2.0

  3. Jak odeslat e-mail, pokud je služba systemd restartována?