[gelöst] systemd-udevd und backup auf ext. USB-HD

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
detix
Beiträge: 1699
Registriert: 07.02.2007 18:51:28
Wohnort: MK

[gelöst] systemd-udevd und backup auf ext. USB-HD

Beitrag von detix » 20.01.2018 12:41:15

Bitte um Nachsicht falls ich die Problematik nicht so richtig in Worte fassen kann:
Wenn die ext. USB-HD Strom bekommt soll durch eine udev-Regel automatisch ein backup eingeleitet werden, das funktioniert ab und zu, aber nicht immer zuverlässig.
Die udev-Regel dafür:

Code: Alles auswählen

KERNEL=="sd[b-i]1", ENV{ID_FS_LABEL}=="backup_usb_hd", ACTION=="add", RUN+="/bin/su -c '/usr/local/bin/pn_backup_usb_hd %k %E{ID_FS_LABEL}' peter"
zum Testen 'journalctl -f' ausgeführt und anschl. zum Neueinlesen als root 'parted -l',
die entsprechenden Meldungen:

Code: Alles auswählen

Jan 20 09:45:53 debian kernel:  sdb: sdb1
Jan 20 09:45:53 debian org.kde.knotify[795]: "/org/freedesktop/UDisks2/block_devices/sdb1" lost interfaces: ("org.freedesktop.UDisks2.Partition", "org.freedesktop.UDisks2.Filesystem", "org.freedesktop.UDisks2.Block")
Jan 20 09:45:53 debian su[2250]: Successful su for peter by root
Jan 20 09:45:53 debian systemd-logind[297]: New session c3 of user peter.
Jan 20 09:45:53 debian su[2250]: + ??? root:peter
Jan 20 09:45:53 debian systemd[1]: Started Session c3 of user peter.
Jan 20 09:45:53 debian su[2250]: pam_unix(su:session): session opened for user peter by (uid=0)
Jan 20 09:45:53 debian su[2250]: pam_unix(su:session): session closed for user peter
Jan 20 09:45:53 debian pkexec[2257]: pam_unix(polkit-1:session): session opened for user root by (uid=1000)
Jan 20 09:45:53 debian pkexec[2257]: peter: Executing command [USER=root] [TTY=unknown] [CWD=/] [COMMAND=/usr/local/bin/pn_odus tune2fs -l /dev/sdb1]
Jan 20 09:46:53 debian systemd-udevd[236]: seq 2654 '/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1' is taking a long time
Jan 20 09:48:53 debian systemd-udevd[236]: seq 2654 '/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1' killed
Jan 20 09:48:53 debian systemd-udevd[236]: worker [2247] terminated by signal 9 (Killed)
Jan 20 09:48:53 debian systemd-udevd[236]: worker [2247] failed while handling '/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1'
Jan 20 09:48:53 debian org.kde.knotify[795]: "/org/freedesktop/UDisks2/block_devices/sdb1" has new interfaces: ("org.freedesktop.UDisks2.Block", "org.freedesktop.UDisks2.Partition")
Jan 20 09:48:53 debian org.kde.knotify[795]: "/org/freedesktop/UDisks2/block_devices/sdb1" has new interfaces: ("org.freedesktop.UDisks2.Filesystem")
das Skript wird offensichtlich ausgeführt (tune2fs -l),
die USB-HD wird hierbei aber nicht gemountet (im Skript: pmount Label), was fehlt an Infos?
Wo muss/könnte ich Was ändern?
Störend sind wohl 'is taking a long time' und gleich danach 'killed'?
Noch ein Hinweis: falls das backup klappt ist die USB-HD nach pumount irgendwie nicht mehr im System ansprechbar/vorhanden.
Zuletzt geändert von detix am 21.01.2018 12:34:15, insgesamt 1-mal geändert.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd-udevd und backup auf ext. USB-HD

Beitrag von rendegast » 20.01.2018 17:56:32

Statt udev könntest Du Debianincron benutzen.
'Auftauchen von /dev/disk/by-label/...... ' -> 'führe backup.sh aus'

Den Job setzt 'peter' in seiner incrontab, keine Intervention von root (udev-Regel) nötig.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: systemd-udevd und backup auf ext. USB-HD

Beitrag von NAB » 20.01.2018 18:34:22

Systemd verbietet dir, "länger laufende" Scripte von udev aus zu starten. Die werden von Systemd gekillt.

Stattdessen sollst du jetzt eine Systemd-Unit starten. Hier findest du eine Vorlage:
https://bbs.archlinux.org/viewtopic.php?id=181080

Hinweis: seine erste Variante mit "systemctl start" funktioniert bei mir in Stretch. Seine zweite Variante mit "TAG+="systemd"" funktioniert bei mir nicht. Bei den Arch-Leuten auch nicht. Ist alles noch etwas schrottig mit Systemd ... hier sieht man auch Herrn Poettering etwas ratlos auf die gleiche Frage antworten:
https://lists.freedesktop.org/archives/ ... 07448.html
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: systemd-udevd und backup auf ext. USB-HD

Beitrag von scientific » 20.01.2018 19:20:42

Ich hab hier eine von einem eigenen Skript erstelle udev-rule, die verrichtet zuverlässig ihren Dienst.

Code: Alles auswählen

 cat /etc/udev/rules.d/99-ext-bkp-volume-u-214f8813-785a-4f9c-8904-9e27d8432434.rules
ACTION=="add", KERNEL=="sd*", SUBSYSTEMS=="usb", ENV{ID_FS_UUID}=="214f8813-785a-4f9c-8904-9e27d8432434", SYMLINK+="disk/mars", TAG+="systemd", ENV{SYSTEMD_WANTS}+="mkbackup-external@u-214f8813-785a-4f9c-8904-9e27d8432434.service", ENV{SYSTEMD_WANTS}+="mkbackup@BKP.target", ENV{SYSTEMD_WANTS}+="smartctl-fast@dev-disk-by\x2duuid-214f8813\x2d785a\x2d4f9c\x2d8904\x2d9e27d8432434.service"

ACTION=="remove", KERNEL=="sd*", SUBSYSTEMS=="usb", ENV{ID_FS_UUID}="214f8813-785a-4f9c-8904-9e27d8432434", RUN+="/bin/systemctl --no-block stop mkbackup@BKP.target"
Ich habe an mkbackup@BKP.target einen timer gehängt, der nach 10 Sekunden die Unit startet, welche das Backup auslöst.
Weiters hängt an diesem Target eine Automount-Unit für diese Platte mit der uuid, die bei Zugriff auf den Mountpunkt die Platte einhängt und nach dem letzten Zugriff nach 10 Sekunden wieder aushängt.

Die 10sek nach dem einstecken hab ich deswegen, dass ich sie nach irrtümlichem Einstecken noch schnell ausstecken kann, und das Backup nicht crashed dabei.

Kann gerne später noch eine vereinfachte Rule posten, und die zugehörigen Units.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
detix
Beiträge: 1699
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: systemd-udevd und backup auf ext. USB-HD

Beitrag von detix » 21.01.2018 12:32:53

Herzlichen Dank für eure Antworten!
Entschieden habe ich mich für Debianincron, kannte ich garnicht aber es scheint perfekt zu funktionieren.

In der /etc/incron.conf das Doppelkreuz vor allowed_users entfernt und als editor kate eingetragen, mich in die /etc/incron.allow geschrieben und mit 'incrontab -e' diese Zeile eingefügt:
/dev/disk/by-label/ IN_CREATE,IN_ONESHOT pn_backup_usb_hd $@ $#

Am Skript selbst waren dafür keine großen Änderungen erforderlich, und die USB-HD bleibt nach Ausführung weiterhin im System ansprechbar, ein hervorragender Tipp!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [gelöst] systemd-udevd und backup auf ext. USB-HD

Beitrag von scientific » 21.01.2018 15:52:34

Wird incrond tatsächlich wieder weiterentwickelt?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] systemd-udevd und backup auf ext. USB-HD

Beitrag von rendegast » 21.01.2018 16:46:19

scientific hat geschrieben: Wird incrond tatsächlich wieder weiterentwickelt?
https://github.com/ar-/incron
0.5.12 von Februar 2015.

https://bugs.debian.org/incron nicht allzu aufregend.

incron uses the Linux Kernel inotify syscalls.
Solange sich da nichts großartiges tut, warum an incron herumbasteln?
cron hat den letzten (debian-)Patch Mai 2015 bekommen, ein letzter "echter" Patch aus Oktober 2014,
und ein "new upstream" in ??
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten