GNU/Linux >> Linux Esercitazione >  >> Linux

Nel file di servizio systemd, come posso dire dopo che l'USB è pronto?

Non l'ho risolto prima, ma sembra che potrebbe essere una buona soluzione per "l'attivazione basata sul percorso".

Invece di avere una clausola "After=" nel tuo file di servizio, dovresti creare un .path file, come descritto in man systemd.path .

Trova un file adatto sotto /dev/bus/usb o /sys/bus/usb , la cui presenza indica che "USB è attivo". Allora prendi systemd monitorare il percorso del file utilizzando il .path file che creerai. Il .path file attiverebbe quindi il tuo .service file quando il file esiste.


Quello che farei è creare un'unità di dispositivo systemd usando la regola an udev. Ad esempio:crea /etc/udev/rules.d/20-usb-bus.rules con:

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

Al prossimo avvio (o al ricaricamento delle regole udev) ora avrai la tua unità di dispositivo di sistema:

# 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
...

Ora puoi avviare il tuo servizio dopo che il bus USB è pronto aggiungendo:

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

al tuo servizio systemd.


Linux
  1. Come creare un servizio Systemd in Linux

  2. Come scrivere uno script di avvio per Systemd?

  3. Come recuperare i dati Xfs dopo Rm?

  4. Come recuperare dopo che Kate si è schiantata?

  5. Come utilizzare Systemd per riavviare un servizio in caso di inattività?

Gestisci l'avvio usando systemd

Come eseguire container come servizio Systemd con Podman

Come eseguire lo script della shell come servizio Systemd in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come determinare la versione USB 1.1 o 2.0

Come inviare un'e-mail se un servizio systemd viene riavviato?