Hallo,
ich habe mir ein kleines Scrpt gebastelt was mit Videodateien automatisch be-/ verarbeitet und diese dann auf meinen NAS schiebt. Jetzt komme ich allerdings an zwei Punkten nicht weiter.
Wie kriege ich am ende des Scripts das ".new" aus dem Dateinamen wieder raus?
Dann soll das Script die ganze Zeit in einer Schleife laufen, sobald neue Dateien in den Ordner make kommen soll sich das Script die Datei krallen und loslegen. Wie kann ich aber nun unterscheiden ob eine Datei noch "benutzt" wird oder aber eben nicht? Also wenn ich jetzt die Datei über NFS/Samba auf meinen Server schiebe, dann dauert dieser je nach Dateigröße einige Zeit. Wie kann ich nun feststellen ob die Datei gerade noch "ankommt" oder schon "angekommen" ist?
Also halt etwas wie "wird Datei noch kopiert/verschoben, lasse Datei in ruhe" ?
Hier mal das Script.
https://nopaste.linux-dev.org/?1172656
Danke
script soll nur "unbenutzte" dateien verarbeiten
Re: script soll nur "unbenutzte" dateien verarbeiten
Sowas geht recht gut mit basename (in Verbindung mit mv). Alternativ könnte man auch mit awk o.ä. was basteln.dmant hat geschrieben:23.01.2018 17:41:49Wie kriege ich am ende des Scripts das ".new" aus dem Dateinamen wieder raus?
Um zu schauen, ob eine Datei geöffnet ist, bietet sich lsof oder auch fuser an.dmant hat geschrieben:23.01.2018 17:41:49Wie kann ich aber nun unterscheiden ob eine Datei noch "benutzt" wird oder aber eben nicht?
Re: script soll nur "unbenutzte" dateien verarbeiten
So:dmant hat geschrieben:23.01.2018 17:41:49Wie kriege ich am ende des Scripts das ".new" aus dem Dateinamen wieder raus?
Code: Alles auswählen
$ a=foo.new
$ echo ${a%.new}
foo
Use ed once in a while!
Re: script soll nur "unbenutzte" dateien verarbeiten
Ich wuerde dazu Ordner fuer die einzelnen Stati einfuehren, z.B.:dmant hat geschrieben:23.01.2018 17:41:49Dann soll das Script die ganze Zeit in einer Schleife laufen, sobald neue Dateien in den Ordner make kommen soll sich das Script die Datei krallen und loslegen. Wie kann ich aber nun unterscheiden ob eine Datei noch "benutzt" wird oder aber eben nicht? Also wenn ich jetzt die Datei über NFS/Samba auf meinen Server schiebe, dann dauert dieser je nach Dateigröße einige Zeit. Wie kann ich nun feststellen ob die Datei gerade noch "ankommt" oder schon "angekommen" ist?
Also halt etwas wie "wird Datei noch kopiert/verschoben, lasse Datei in ruhe" ?
- incoming
- 2convert
- converting
- 2transfer
- transferring
Jeder Verarbeitungschritt (Convert und Transfer) schaut im vorigen Ordnern ob was da ist, verschiebt es dann zu Beginn in seiner Taetigkeit in seinen eigenen Processing-Ordner, und wenn er fertig ist in den Nachfolgeordner. mv(1)s sind atomar, damit ist sichergestellt, dass eine Datei immer nur in genau einem Status ist. In so einem System wuerde ich Convert und Transfer aber trennen und separat laufen lassen.
Ich denke, das ist robust und klar ... und auch nicht viel aufwaendiger.
Use ed once in a while!