Hallo zusammen
Nachdem ich gedacht habe dass es gelöst ist wurde das Script doch wieder gekillt.
Der Grund ist dass UDEV alles killt nach einer gewissen Zeit, egal ob entkoppelt (fork) oder nicht, das nützt auch ein nohup oder at nichts.
Dann habe ich einen Tip gelesen und wurde auf systemd aufmerksam. Kompliziert dachte ich, na gut. ausprobieren.
Zuerst habe ich die UDEV Rule angepasst, usb auf Subsystem und Drivers sowie Systemd Service eingefügt.
Code: Alles auswählen
SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{serial}=="FF......", KERNEL=="sd?1", ACTION=="add", SYMLINK+="usb-backup", ENV{SYSTEMD_WANTS}+="usb_backup@%k.service"
Danach das Systemd Service Script angelegt mit dem Aufruf des originalen usb-backup.sh Scripts
Code: Alles auswählen
# cat /etc/systemd/system/usb_backup@.service
[Unit]
Description=USBBackup
[Service]
ExecStart=/usr/local/bin/usb-backup.sh %I
[Install]
WantedBy=system.device
Einfach nur eine Beschreibung, Script mit ExecStart aufrufen und ein WantedBy angegeben.
das %I übergibt einfach nur das Device /dev/sda1. Verwend ich noch nicht weiter da ich mit der UDEV Rule einen Link auf sda1 gesetzt habe den ich verwende.
UDEV neu starten und Systemd Service enable und start.
Code: Alles auswählen
/etc/init.d/udev restart
systemctl enable usb_backup@.service
Was soll ich sagen... es läuft perfekt.
Das .service file kann man noch etwas anpassen und verbessern mit wants network und/oder ssh (Voraussetzung Netzwerk oder SSH) damit der Service auch nur gestartet wird wenn Netzwerk und/oder SSH da sind.
Das Gute ist, ich musste mein Bash Script nicht anpassen.
Gruss
Gugus