crontab Änderung ist nach einem Neustart wieder weg, was tun?

  • Für den Start jeden 1. des Monats hätte ich in der /etc/config/crontab folgenden Eintrag gemacht:

    #55 9 1 * * /mnt/HDA_ROOT/.config/.autorun/startup.sh


    In dem Script Startup.sh steht eigentlich nur das, was mir in der crontab ohnehin überschrieben werden würde: /etc/init.d/startup


    Allerdings ist nach einem Neustart, die hinzugefügte Zeile wieder weg und kommt gar nicht dazu mein Script Startup.sh zu starten ...

  • Leg das script doch mal nach Public (zum testen) und nenne den Ordner nicht "*autorun*".


  • Ich glaube nicht, dass das Script oder der Ordner das Problem ist, sondern ganz einfach das "Verschwinden" meines crontab-Eintrages.

    Code
    1. [~] # crontab -l
    2. # m h dom m dow cmd
    3. ...
    4. 0 0 * * * /etc/init.d/antivirus.sh archive_log
    5. 11 0 */1 * * /etc/init.d/antivirus.sh update_db
    6. # Fuer Start jeden 1. des Monats
    7. 55 9 1 * * /share/Public/startup.sh


    Das Editieren funktioniert, die Übernahme auch, wird auch mit crontab -l angezeigt, aber nach dem Neustart ist weder in /etc/config/ noch in der /temp/cron/ mein Eintrag vorhanden.

    Da ändert auch das verschieben des Scriptes von /config/autorun/ nach /Public/ nichts.

  • Benenne dein Script in start__up.sh um und passe den Eintrag in der Crontab an. Wenn du meinen Beitrag weiter oben aufmerksam gelesen hättest, wärst selbst drauf gekommen.

  • Wenn du meinen Beitrag weiter oben aufmerksam gelesen hättest


    OK, lesen und verstehen …



    Wobei (die Asche ist zum Glück bereits abgekühlt …) auch das Umbenennen in [start_up.sh] nicht zielführend war. Es wird einfach alles was ein "start" drinnen hat überschrieben.


    Hab' dann noch einen anderen Filenamen versucht und damit funzt es ;-)

    Und so nebenbei habe ich jetzt auch diese doofe "Nachmitternacht_Update Funktion" vom AV nach vorne "verschoben".


    20 21 */1 * * /etc/config/.autorun/my_av_update.sh

    55 9 1 * * /etc/config/.autorun/my_first_of_month.sh


    Man muss halt einfach genau den Befehl, der im crontab ausgeführt werden sollte in ein extra Script auslagern ...

  • Muss das Thema noch mal hervorkramen...


    Das mit dem dauerhaften Eintragen der Befehle in der crontab funktioniert, nach jedem reboot sind die (noch/wieder) vorhanden.

    Ich habe dort zwei Befehle eingetragen, einen für den Shutdown, einen für den Start.

    Der für den Shutdown funktioniert prima, der für den Start aber nicht!?


    Wenn ich in der CLI den "echten" Start-Eintrag aufrufe (/etc/init.d/startup) und den "künstlichen" Befehl ausführe (/etc/config/first_of_monthon.sh) dann erhalte ich eine identische Ausgabe.


    Code
    1. [~] # /etc/init.d/startup
    2. 0
    3. system startup will be done by /dev/rtc ...
    4. [~] #
    5. [~] # /etc/config/first_of_monthon.sh
    6. 0
    7. system startup will be done by /dev/rtc ...
    8. [~] #

    In der .sh ist als einziger Befehl /etc/init.d/startup eingetragen.


    Wo ist da noch der (Denk) Fehler?


    Gruss

  • Bei manuellem Ausführen des Befehles /etc/init.d/startup wird wiederum . /etc/init.d/wait_RR aufgerufen und darin auf QSync etc. gewartet.

    So weit so gut, das kann man "immer" manuell starten und das Script wird einfach ausgeführt.


    Das "echte" als auch das "manuelle" Stop Script wird auch ausgeführt, da der laufende cron einfach alles abarbeitet, soweit OK.


    Das Problem ist einfach, dass der Start Befehl irgendwie in den RTC-Timer rein muss! Bevor die Kiste nicht hochgefahren ist, lauft auch kein cron, der die crontab abarbeiten könnte.


    Soweit ich das verstehe, wird direkt beim shutdown der direkt nächste Startup in den RTC geschrieben und gleichzeitig die crontab neu sortiert/beschrieben. Da wird alles gelöscht, was *start* oder *stop* im Scriptnamen stehen hat. Das gilt auch für die "echten" Start/Stop Scripte, die aber neu aus der Config des [Energiezeitplan] ausgelesen werden, Die könntest du sogar manuell überschreiben, allerdings hat die keinen Typ für monatlich, sondern nur tägl. wöchentl. oder Wochentag …


    Da ist kein Denkfehler, es liegt einfach daran, dass beim Runterfahren der RTC für den Start "beschrieben" werden muss und das Script welches das macht, ignoriert die manuellen Einträge …

    Beim Shutdown ist es egal, da werkt nicht der RTC, sondern der cron für dich, der nimmt alles was in der crontab steht.

  • Tja, so ungefähr habe ich das befürchtet.

    Das der "monatlich" Eintrag dort fehlt ist einfach nur zum :X.

    Ich halte das auch für einen ziemlichen Bug.


    Nun ja, dann werde ich weiter ohne den monatlichen Eintrag auskommen müssen, wäre auch zu schön gewesen...

    Das heißt aber: bei Dir funktioniert es auch nicht!?

    Ich hatte die o.a. Posts so verstanden, als hättest Du es irgendwie hinbekommen.


    Gruss

  • Nachtrag:


    Ich habe mir mal die Mühe gemacht und mein [autorun.sh] sich selber in den /etc/rcK.d/ Ordner kopieren lassen, jeweils mit unterschiedlichen Kxx, bzw. QKxx Namen.

    im aufgerufenem Stop() Block schreibe ich ein Log um zu sehen, welche Scripte in welcher Reihenfolge gestartet werden:

    Code
    1. 2018-12-20 00:15:23 - Stop APP AutoRun [/etc/rcK.d/QK120autorun]
    2. 2018-12-20 00:15:27 - Stop APP AutoRun [/etc/rcK.d/K01autorun]
    3. 2018-12-20 00:15:35 - Stop APP AutoRun [/etc/rcK.d/K11autorun]

    Offensichtlich werden zuerst die QKx Kill-Scripte gestartet und danach alphabetisch die Kx Kill-Scripte, wobei ich nicht bis zum Ende kommen, da irgendwann kein Dienst mehr läuft, der mein Log schreibt … :|


    Habe aber noch nicht herausgefunden, welches Script mir jetzt mit welchem Befehl den RTC überschreibt. Finde ich die Stelle, könnte ich danach "meine" Startparameter in den RTC pushen :/


    Ich hatte die o.a. Posts so verstanden, als hättest Du es irgendwie hinbekommen.

    Jein, ich habe es hinbekommen, dass ich den McAffee dazu bringe, zu meiner Zeit die Signaturen herunterzuladen und nicht erst um 0:xx


    Für den monatlichen Start hätte ich ein "PoC", was bisher rein theoretischer Natur ist ;-)

    Meine Lösung wäre ein Script welches zum gewünschtem Startzeitpunkt (1. des Monats) die Config des Energiezeitplanes um meinen Eintrag ergänzt. Der würde dann beim Rebooten in den RTC übernommen …


    Nachteil: Funktioniert nur in der Woche, in der auch der Monatserste liegen würde … War mir aber bisher zu viel "scripterei" und noch nicht perfekt, funktionieren würde es. Derzeit mache ich es (noch) manuell und trage mir im Energiezeitplan den Startwert ein, falls in der aktuellen Woche der Monatserste reinfallen würde ...

    Einmal editiert, zuletzt von RedDiabolo ()

  • Ja, so im "Überfliegen" kann ich den PoC Ansatz nachvollziehen.

    Hat m. E. den Nachteil, das das NAS dennoch wöchentlich startet, nur um dann 1 x im Monat einen Eintrag zu ergänzen.

    Ist bei QNAP m.E. nicht zu Ende gedacht worden mit den unterschiedlichen Start- und Stopzeiten bei verschiedenen Funktionen.

    Das waren bestimmt verschiedene Abteilungen, die nicht miteinander geredet haben.


    Gruss

  • Ganz meine Meinung, würde ja schon reichen, wenn wenigsten die monatliche RAID-Bereinigung zur Startzeit das NAS selber starten könnte. Dann bräuchte ich den ganzen Zinnober nicht aufführen.