Ausführen eines Scripts beim System start

  • Hallo,


    ich kenne mich mit dem NAS noch nicht genauer aus. Ich möchte das alle Dateien eines Ordners, welche älter als 7 Tage sind, beim System (NAS) Start gelöscht werden. Ich gedachte dies per Script im Autostart zu realisieren, und dazu hätte ich folgende Fragen:


    gibt es ein Template wie das Script auszusehen hat?
    wo muß es hin (wie heißt der Autostartordner)?


    Danke schon mal

  • Hi,

    Frage: warum nur beim NAS Start und nicht bei laufenden NAS die Dateien die älter als 7 Tage sind löschen?

    weil ich vermute, dass dies einfacher zu implementieren ist.


    Können sie mir behilflich sein, wie ein solches Script Aussehen muß (Syntax, Sprache, ...)?
    Wie verhält es sich mit der autorun.sh? Wird der Text dort eingefügt, oder stehen dort nur Verweise zum eigentlichen Script?

  • Hallo,


    um dein Problem zu lösen gibt es zwei Ansätze!


    1. Löschen im laufenden Betrieb


    Dafür würde ich cron empfehlen. Über cron wird zeitgesteuert ein Script bzw. Befehl aufgerufen um zb. jede Nacht um 2:30Uhr alle Dateien die älter als 7 Tage sind in einem (oder mehreren) Verzeichnis löscht.


    Beispiel für Befehl alle Dateien in einem Verzeichnis [variable "$DIR" oder festes Verzeichnis angeben] die älter als 7 Tage sind anzeigen:
    find "$DIR" -type f -mtime +7 -ls


    Beispiel für Befehl alle Dateien in einem Verzeichnis [variable $DIR ] die älter als 7 Tage sind löschen:
    find "$DIR" -type f -mtime +7 -delete


    Crontab ergänzen mit:
    30 2 * * * /mnt/ext/usr/bin/find /dein_gewünschtes_Verzeichnis -type f -mtime +7 -delete



    2. Löschen bei Neustart


    autorun.sh anlegen und den oben beschriebenen Löschbefehl in die Startsektion eintragen!



    Ich persönlich würde Cron benutzen.

    • editieren von /etc/config/crontab
    • Konfig aktualisieren mit crontab /etc/config/crontab
    • Crond neu starten mit /etc/init.d/crond.sh restart

    mfg kasimodo

    6 Mal editiert, zuletzt von kasimodo ()

  • Hi,


    danke für die Hilfreiche Erklärung, nur:


    Dafür würde ich cron empfehlen. Über cron wird zeitgesteuert ein Script bzw. Befehl aufgerufen


    was ist Vorteil von cron, warum sollte man es verwenden?
    Mein NAS startet jeden Morgen (autorun.sh wird eh ausgeführt), daher erschien mir die autorun.sh der unkomplizierte weg.


    Ich hätte noch ein paar Fragen:
    muß man das Volume / Share vor Ausführung des Befehls nicht mouten (oder wird das vom System gemacht)?
    wie hat die autorun.sh auszusehen?
    existiert sie bereits und muß nur editiert werden?
    wo liegt sie?
    Zugriff via Putty (SSH)?


    danke schon mal vielmals

  • Crontab ergänzen mit:
    30 10 * * * /mnt/ext/usr/bin/find /share/Kameras -type f -mtime +7 -delete


    Moin,


    das habe ich bei meinem Qnap leider erfolglos probiert.


    auch

    Code
    30 10 * * * /mnt/ext/usr/bin/find /share/Kameras -iname "*" -mtime +7 -delete




    hat nicht funktioniert. Obwohl ich den Crondienst danach neu gestartet habe.


    d.h. alle Dateien alter als 7 Tage waren danach noch da.


    Noch weitere Ideen ?


    Edit: /mnt/ext/usr/bin/find gibt's auf meinem TS269L mit FW. 4.2.4 nicht. Weiss jemand, wo "find" abgelegt ist ?


    Edith2: Ich habe es jetzt über ein Script gelöst, welches ich über Cron aufrufe, das funktioniert....

    2 Mal editiert, zuletzt von Bartimaus ()

  • was ist denn die konsolenausgabe von which find und find --help

  • Code
    usr/bin/find

    Danke, damit versuche ich es jetzt auch mal direkt über Cron, ohne Skript... !

  • und die Ausgabe von find --help ??


    "find" ist nicht gleich "find" - abhängig von der Version sind die Befehlsoptionen unterschiedlich

  • Melde mich später nochmal, komme momentan nur per ipad/sshapp drauf, ist etwas umständlich mit c&p...


    Edit:

  • so müsste etwas angezeigt werden:


    find /share/Kameras/ -iname "*" -mtime +7


    Zumindest funktioniert dies bei mir! Ohne den letzten "/" wird nichts angezeigt. /share/Kameras ist doch ein symlink - oder?

    Einmal editiert, zuletzt von kasimodo ()

  • Ja, das rote slash war das Zünglein an der Waage... hatte ich auch schon rausgefunden in meinem Skript. Wie gesagt, morgen früh läuft der Cronjob mit direktem Befehl ohne Skript, bin gespannt aber zuversichtlich

  • hätte jemand eine Erkläring wie ich das automatische Löschen von Dateien welche älter als 7 Tage sind realisieren könnte?

  • Ich würde nichts an irgendeiner Systemdatei ändern wenn man nicht genau weiß was man da tut. ;)


    Der cron daemon ist unter Linux genau das Mittel zum Zweck um automatisierte Jobs laufen zu lassen.
    Anleitungen wie man mit cron umgeht gibt es im Netz jede Menge.
    Und wichtig zu wissen: cron selbst steuert nur die Ausführung der Jobs!


    Du musst also eine Datei mit den notwendigen Kommandos zum Löschen der 7 Tage alten Dateien anlegen, z.B. mit Namen del7.sh.
    Wenn diese Datei genau das macht was Du willst trägst Du dann im cron nur ein wann die Datei laufen soll.
    Wenn Du diesen Job dann täglich laufen läßt hast Du niemals ältere als 7 Tage alte Dateien im System.


    Übrigens ist in der ersten Antwort doch ein Link der genau zu einer "Autostart.sh" Lösung führt.
    Nur: man muss sich schon ein wenig mit Linux auskennen um das umzusetzen, sonst läuft man Gefahr einen teuren Briefbeschwerer zu erhalten :D .


    Gruss