Aufwachen bevor Aufgabe durchgeführt wird?

Status
Für weitere Antworten geschlossen.

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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
 

TeXniXo

Benutzer
Mitglied seit
07. Mai 2012
Beiträge
4.948
Punkte für Reaktionen
99
Punkte
134
Probiere mal via Zeitplaner / Energiesparplan / Ruhezustand / Hibernation / usw. 10 Min vor Ausführung der Aufgabe zu aktivieren.
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Einfach mal am Anfang des Scriptes ein sleep 60 probieren?
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Und wie müsste das aussehen?
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Im Endeffekt ungefähr so:

#! /bin/sh
sleep 60
# dein Code
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
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
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
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
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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.
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
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
 

Kito-b

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
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...
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.217
Punkte für Reaktionen
2.832
Punkte
423
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:

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
"Permission denied" – das Script sollte wohl mit root-Rechten laufen
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.217
Punkte für Reaktionen
2.832
Punkte
423
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:

TiRAR

Benutzer
Mitglied seit
30. Aug 2019
Beiträge
22
Punkte für Reaktionen
0
Punkte
7
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