Am 23.01.2017 um 12:06 schrieb Peter Ludikovsky: > Dann wäre interessant, wie die Pipeline aussieht. Wie kommen die Daten > an, wie werden sie verarbeitet, wie werden sie weitergeschickt. Wenn das > eine Kette von scp -> Shell Script -> scp ist dann wird das leichter als > wenn alles in einer kompilierten Applikation abläuft. Bei der Verarbeitung (ohne Logging) ist nicht mal eine Datei im Spiel. Es sind nackte Datenströme, die per STDIN und STDOUT verarbeitet werden: xinetd schiebt die ankommenden Daten auf das STDIN eines Perl-Skripts, raus geht's mit STDOUT -> netcat - wobei man das vielleicht sogar noch ins Perl-Skript selbst einbauen könnte ... ich glaube, es gibt ein Perl-Modul "Socket" oder so ähnlich. *grübel* > Und gerade mit dem > .incomplete z.B. lässt sich meine erste Bash-Idee passend abwandeln: > > ( > cp <src> <dst>.incomplete && \ > mv <dst>.incomplete <dst> > ) & # Job im Hintergrund starten / > # "fork()" > bpid=$! # Background-PID speichern > ( sleep 10; kill -9 ${bpid} && \ > logger -p local0.error "Error copying" > ) & # Wenn nach 10 Sekunden cp nicht > # fertig ist -> Abbruch m. Meldung > > Damit werden die Daten im Hintergrund kopiert (auf Festplatte, Netzwerk, > whatever) und erst umbenannt wenn komplett kopiert wurde, ansonsten > bleibt ein .incomplete Datei. Ja, das geht schon in die richtige Richtung. Nun muss ich das noch in Perl umpfriemeln (damit ich es in das bestehende Skript einbauen kann und keinen Wrapper brauche), aber das sollte jetzt nicht sooo schwer sein. Danke für den Denkansatz und -stoß, ich hatte halt gehofft, dass es schon irgendwo was fertiges gibt, weil jemand das gleiche oder zumindest ein analoges Problem schon mal gelöst hat. > Nachdem das mv innerhalb eines FS atomic > ist sollte es hier auch keine Probleme geben. Der Check ob das Ziel ein > gültiger Mount ist überlasse ich dem Leser :) Wie schon in einem früheren Posting erwähnt, gibt es dafür den fertigen Befehl "mountpoint" im Paket initscripts: mountpoint - see if a directory is a mountpoint Der Teil ist also hinreichend trivial. ;-) Gruß Stefan
Attachment:
signature.asc
Description: OpenPGP digital signature