Script ausführen, wenn neue Dateien/Ordner in Ordner kommen?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Ich dachte gerade du antwortest dir selbst.
frimp, framp, fremp, fromp ;)
 
Nun ja, wenn in dieser eine Minute die Ordner in diesem Ausmaß gelöscht werden soll (wird ganz sicher nicht innerhalb 1 Minute fertig sein, wenn es um 2 TBs geht), wird schon der nächste Befehl aufgerufen und der erkennt natürlich die Veränderungen (da ja grad die Dateien gelöscht werden) und ruft dann die gliechen Zeilen auf und sie löschen dann ... und .. was kommt dann? ERORR ;)

Ich habe das bei mir so gelöst, dass ich zu beginn einer 'Aktion' eine Datei schreibe. Zum Ende der 'Aktion' wird die Datei wieder gelöscht.
Beim nächsten Durchlauf prüfe ich zuerst, ob diese Datei schon/noch vorhanden ist, und nutze einen 'EXIT 0', um den vorhandenen Prozess nicht zu gefährden.
 
Ich habe das bei mir so gelöst, dass ich zu beginn einer 'Aktion' eine Datei schreibe. Zum Ende der 'Aktion' wird die Datei wieder gelöscht.
Beim nächsten Durchlauf prüfe ich zuerst, ob diese Datei schon/noch vorhanden ist, und nutze einen 'EXIT 0', um den vorhandenen Prozess nicht zu gefährden.

Auch eine effektive Lösung ... Man lernt hier nie aus! :)
 
Soo effektiv ist es leider nicht, wenn das Script nicht zu Ende läuft, wird auch das Lockfile nicht gelöscht und ein neuer Run ist nicht möglich.
Am besten nehmt ihr den Code unten für das Lockfile. Mit diesem wird das Lockfile auch gelöscht, wenn das Script mit Error 1 etc abbricht oder Ctrl-C gesendet wird.

Rich (BBCode):
#!/bin/bash

LOCKFILE="./LOCKFILE"
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
    echo "Läuft bereits, Exit"
    exit
fi
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
echo $$ > ${LOCKFILE}

echo "Ab hier dein Code"
sleep 20
 
Kann man das nicht besser mit "flock" machen?
Die if-Abfrage ist leider nicht atomar. Es müsste eigentlich mit "flock" gehen (statt der 100 kann ein anderer file-descriptor ausser 0 bis 3 genommen werden:


Rich (BBCode):
#!/bin/bash
LOCKFILE="./LOCKFILE"
exec 100>${LOCKFILE} || exit 1
flock -n 100 || exit 1
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT

echo "Ab hier dein Code"
sleep 20

Der trap-Befehl ist nicht unbedingt nötig, er beseitigt nur die "Dateileiche".
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat