2016-04-04 6 views
0

Ich schrieb zwei udev Regeln, die bis zur Einführung von systemctl gut funktionierte.udev Regeln mit Systemctl funktionieren nicht mehr wie erwartet

Diese Regeln führen einen Daemon immer dann aus, wenn eine Art von USB-Gerät eingesteckt ist, und stoppen den gleichen Daemon, wenn das gleiche Gerät ausgesteckt wird. Dies geschieht mit einem Hilfsskript myscript.

Mit systemctl jetzt das Problem ist, dass es offenbar den Dämon von myscript nach einigen Sekunden aufgerufen tötet das Gerät eingesteckt ist

Die Regeln sind wie folgt:.

  • SUBSYSTEM == "usb ", ENV {DEVTYPE} ==" usb_device ", ENV {VID_PID} ="% s {IDVendor}:% s {idProduct} ", ACTION ==" hinzufügen ", RUN + ="/etc/init.d/meinskript plug% E {VID_PID} "`

  • SUBSYSTEM == "usb", AKTION == "Entfernen", ENV {DEVTYPE} == "usb_device", ENV {VID_PID} = "% E {ID_VENDOR_ID}:% E {ID_MODEL_ID}", RUN + = "/ etc/init.d/myscript unplug% E {} VID_PID "`

beachte, dass die myscript nimmt zwei Argumente: die Aktion Stecker oder Trennen und die Gerätekennungen.

Wissen Sie, wie man das Problem behebt oder wie man es implementiert - wenn nötig - in Bezug auf systemctl?

Antwort

0

Wie der systemd.device Manpage sagt, eine Unit-Datei für Ihren Dienst, schreiben und dann das Gerät mit "systemd" markiert und dann verwenden, um die Eigenschaft SYSTEMD_WANTS das Gerät zu starten. Verwenden Sie die Eigenschaft RUN nicht für lang andauernde Prozesse.

+0

Wie übergebe ich * die genauen * Argumente VID und PID an die Systemeinheit? – Martin

Verwandte Themen