Aufwachen bevor Aufgabe durchgeführt wird?

  • 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.

Kito-b

Benutzer
Registriert
16. Aug. 2019
Beiträge
10
Reaktionspunkte
0
Punkte
1
Hardware: DS116

Hallo zusammen,

ich habe über den Aufgabenplaner etwas hinterlegt, dass bei manueller Ausführung funktioniert. In einem Ordner x wird geprüft ob es Dateien gibt, die älter als x Tage sind. Wenn ja, dann löschen.

Wie gesagt, wenn man es manuell aufruft (und somit die Platte aufgewacht ist) funktioniert es. Wenn ich aber den Zeitplan einstelle, dass es um 0:00 Uhr ausgeführt werden soll, läuft es in einen Fehler.

Sehr geehrter Benutzer,

Aufgabenplaner hat eine geplante Aufgabe abgeschlossen.

Aufgabe: Dateien loeschen
Startzeit: Fri, 16 Aug 2019 00:00:02 GMT
Stoppzeit: Fri, 16 Aug 2019 00:00:12 GMT
Aktueller Status: 1 (Unterbrochen)
Standardausgabe/Fehler:


Mit freundlichen Grüßen
Synology DiskStation

Kann man nun sagen, dass die platte aufwachen soll bevor die Aufgabe ausgeführt werden soll?

Danke vorab
 
Probiere mal via Zeitplaner / Energiesparplan / Ruhezustand / Hibernation / usw. 10 Min vor Ausführung der Aufgabe zu aktivieren.
 
Leider gibt es diesen Weg bei mir nicht. Aber du hast mich auf eine Idee gebracht, mit der es funktionieren kann. Im Prinzip wie du meinst.

Systemsteuerung/Hardware und Energie/Energie-Zeitplan

Einstellen, dass es fünf min vor der Aufgabe gestartet werden soll. Wird heut getestet. Danke dir :D
 
Einfach mal am Anfang des Scriptes ein sleep 60 probieren?
 
Im Endeffekt ungefähr so:

#! /bin/sh
sleep 60
# dein Code
 
Sorry, komme jetzt erst wieder zum antworten. So hier habe ich es probiert, aber damit funktioniert es auch nicht...

Rich (BBCode):
#! /bin/sh
sleep 60
find /volume1/Aufnahmen/ -mtime +7 -delete > /volume1/Aufnahmen/logfile 2>&1
 
Funktioniert das Löschen nicht oder nur das Log?

Falls ersteres,

#! /bin/sh
PATH=/bin:/usr/bin
sleep 60
find /volume1/Aufnahmen/ -mtime +7 -delete > /volume1/Aufnahmen/logfile 2>&1
 
Habe es jetzt mal so hinterlegt. Wenn ich es manuell ausführe klappt es. Mal sehen ob es dann auch nach Zeitplan geht. Danke erstmal
 
Eventuell muss man auch einfach die Festplatte einmal "wecken", dann den sleep einbauen und den korrekten find Befehl nutzen.
Kann ich mir aber eigentlich nicht vorstellen.

Vielleicht ist auch einfach kein Recht beim Script gesetzt
 
Hää?? Die Frage war doch so gewesen das die Festplatte aufgewacht wird bevor das Script ausgeführt wird? Also ist der genannte Befehl das die Platte einschläft? Das möchte ich ja gar nicht.
 
Dass etwas, das nicht weckt, einschläfern soll, ist kein logischer Schluss.

"find" durchsucht zudem das Dateisystem doch, dabei wird die Hardware auf jeden Fall geweckt.

Wenn nix helfen sollte, probier mal

#! /bin/sh
PATH=/bin:/usr/bin
sleep 60
find /volume1/Aufnahmen/ -mtime +7 -delete < /dev/console > /volume1/Aufnahmen/logfile 2>&1
 
Naja aber "sleep" heißt nun mal schlafen. Somit würde ich verstehen, dass die Platte einschlafen soll. Oder wird die Platte geweckt wenn sie schläft mit dem Befehl sleep?

Hatte es heut nacht probiert, geht aber auch nicht. Im log file steht "find: cannot get current directory: Permission denied". Also Berechtigung? Ist doch aber auch quatsch, wenn das gleiche Script funktioniert, wenn ich es manuell starte... Außerdem ist es ja auch der Haus-eigene Aufgabenplaner. Der braucht noch andere Berechtigungen von mir?

Ich werde das von dir auch mal einbauen...
 
Mit "sleep" legst du nur den Prozess einige Zeit schlafen. Das bringt nichts. Die Platten kann man auch nicht gezielt aufwecken, die wachen von alleine auf, wenn jemand darauf zugreift.

Jetzt gilt es halt nur, einen Befehl zu finden und in das Script einzubauen, der nicht gleich in einen Timeout rennt und einen Laufzeitfehler produziert, wenn er mal etwas länger warten muss, falls die Platten erst noch aufwachen müssen. Kleinere Lesebefehle sind ungeeignet, da sie oft aus dem Cache bedient werden, es sei denn, sie sind umfangreicher. Selbst wenn das Script selbst auf Platte liegt, ist es deshalb kein Garant dafür, dass der Aufruf durch den crond schon die Platten weckt. Schreibzugriffe sind da wertvoller.

Mir würde da spontan ein "/bin/date >/volume1/Aufnahmen/dummy.txt" einfallen, vielleicht noch mit einem "sleep 60" dahinter - müsste man mal probieren.
 
Zuletzt bearbeitet:
"Permission denied" – das Script sollte wohl mit root-Rechten laufen
 
Das sowieso, davon bin ich ausgegangen. Weiß der Teufel, wie die Berechtigungen auf /volume1/Aufnahmen und darunter sitzen :rolleyes:

Edit, nochwas:
Code:
find /volume1/Aufnahmen/ -mtime +7 -delete < /dev/console > /volume1/Aufnahmen/logfile 2>&1
Was soll diese Eingabeumlenkung von /dev/console? Ich weiß nicht, ob ein cronjob ein /dev/console überhaupt kennt. Das ist normalerweise das (Pseudo-)Device, an dem man angemeldet ist. Also bitte mal rausnehmen.
Code:
find /volume1/Aufnahmen/ -mtime +7 -delete >/volume1/Aufnahmen/logfile 2>&1
 
Zuletzt bearbeitet:
Hallo,
ich hatte genau das gleiche Problem. Mein Script besteht eigentlich nur aus einem find/delete-Befehl und lies sich auch nur manuell ausführen. Nach Zeitplan kam immer "Permission denied".
Seitdem ich den "Besitzer" dann auf root geändert habe, läuft's einwandfrei.
 
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