DSM 6.x und darunter Aufgabenplaner - Aufgabe "nach dem Hochfahren" ausführen & Aufgaben nachholen

  • 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

Alle DSM Version von DSM 6.x und älter
Status
Für weitere Antworten geschlossen.

dariusmk

Benutzer
Registriert
16. Okt. 2017
Beiträge
184
Reaktionspunkte
28
Punkte
28
Aufgabenplaner - Aufgabe "nach dem Hochfahren" ausführen & Aufgaben nachholen

Hallo,

ich möchte eine Aufgabe "nach dem Hochfahren" der Diskstation ausführen. Leider bietet der Aufgabenplaner unter "ausgelöste Aufgaben" nur die Möglichkeit, eine Aufgabe "beim Hochfahren" oder "beim Herunterfahren" auszuführen.

Gibt es einen Trick, eine Aufgabe erst "nach dem Hochfahren" auszuführen?

Außerdem würde mich interessieren, ob es im Aufgabenplaner eine Möglichkeit gibt, eine Aufgabe, die zu einem bestimmten Zeitpunkt nicht ausgeführt werden konnte, zum nächst möglichen Zeitpunkt auszuführen.

Beispiel: Ich lege eine Aufgabe im Aufgabenplaner an und lege den Ausführungszeitpunkt auf 14 Uhr fest. Die Aufgabe wird jedoch um 14 Uhr nicht ausgeführt, weil die Diskstation nicht eingeschaltet ist. Die Aufgabe soll in diesem Fall zum nächst möglichen Zeitpunkt ausgeführt werden, z. B. wenn ich die Diskstation um 15 Uhr einschalte.

Über einen Hinweis würde ich mich freuen.

VG
dariusmk
 
"Beim Hochfahren" bedeutet für mich, dass der Job ausgeführt wird, wenn alle Resourcen verfügbar sind.
Ich unterstelle mal, dass Du ein Script ausführen möchtest.
Dort Script kannst Du ganz vorne noch einen 'SLEEP $SEKUNDEN' einfügen, wenn Du das noch später haben möchtest.

Und für Deinen zweiten Fall würde ich sagen, lege zwei Jobs an.
Ein Job startet beim Hochfahren und der zweite Job startet das gleiche Script zu deiner fixen Uhrzeit.
Falls Du eine Überschneidung vermeiden möchtest, dann überlege Dir, ob Du noch eine DATEI erzeugst, solange der Job rennt. Wenn es diese Datei schon gibt, dann würde der gleiche Job nicht nochmal zeitgleich ausgeführt.
 
Zu deinem Beispiel von oben: dafür würde ja wieder "nach dem Hochfahren" reichen? Wenn die Diskstation um 15:00 startet, wird wieder dein Skript ausgeführt.

Eine etwas andere Variante wäre, dein Skript alle 15 Minuten laufen lassen. Dann eine Datei prüfen, ob die letzte Aktualisierung (touch) länger als xy Minuten zurück ist und dann ausführen. Am Ende wieder die Datei mit touch aktualisieren.
 
Hallo,

danke für Deine Hilfe.

Ja genau, ich möchte ein Skript ausführen. Dieses liegt in einem Unterverzeichnis von /volume1/. Wenn ich das Skript manuell als admin starte (durch Klick auf den Button "ausführen" im Aufgabenplaner), wird es ausgeführt. Wenn ich das Skript per "ausgelöster Aufgabe" als admin beim Hochfahren ausführen möchte, wird es nicht ausgeführt.

Meine Vermutung ist, dass das Skript beim Hochfahren nicht ausgeführt wird, weil /volume1/ noch nicht eingebunden ist. Ich möchte deshalb ein zweites Skript erstellen. Dieses zweite Skript besteht nur aus dem von Dir vorgeschlagenen Befehl "sleep 60" und wird vor dem ersten Skript ausgeführt.
 
Nein das kann es eigentlich nicht sein.
Habe so wie du ein Skript, welches unter /volume1/ abgelegt ist, und das wird definitiv beim Starten ausgeführt.

Kann es sein, dass du das Skript noch nicht mit dem richtigen User ausführst im Aufgabenplaner?
Evt. mal die Ausgabe in eine Datei umleiten und das Log dann ansehen.
 
Es geht um den Start eines JDownloaders beim Hochfahren der Diskstation. Den JDownloader habe ich nicht als fertiges Paket über das Paketzentrum installiert, sondern manuell von Hand als admin.

Das auszuführende Skript hat den folgenden Inhalt:

#!/bin/sh
JAVA_HOME=/volume1/@appstore/java8/ejdk1.8.0_161/linux_i586/jre
export JAVA_HOME
cd /volume1/@appstore/JDownloader
umask 000
$JAVA_HOME/bin/java -jar JDownloader.jar >/dev/null 2>/dev/null &

Der JDownloader wird auch brav gestartet, wenn ich eine Aufgabe mit diesem Skript im Aufgabenplaner manuell ausführe (durch Klick auf "ausführen"). Leider funktioniert das Skript jedoch nicht als "ausgelöste Aufgabe" "beim Hochfahren". Als Benutzer habe ich admin angegeben.
 
Habe ich soweit schon alles verstanden, manuell klappts... okay.

Ich würde des Output mal in eine Datei anstatt von den beiden /dev/null umleiten. Irgendwas wird schon anders sein beim Hochfahren, ohne Log wirds aber schwierig.
 
Wie muss der Befehl aussehen, den ich für's Umleiten in eine Datei eingeben muss?
 
In deinem Fall vorübergehend mal die /dev/null ändern auf /volume1/pfad/datei.txt ändern.
 
Das Skript start.sh wird im Aufgabenplaner leider weiterhin nicht ausgeführt, wenn ich es im Aufgabenplaner als "ausgelöste Aufgabe" -> "benuterdefiniertes Skript" anlege mit dem Trigger "Hochfahren". Es wird selbst dann nicht ausgeführt, wenn ich es nach dem Hochfahren manuell starte (durch Mausklick auf "Ausführen" im Aufgabenplaner). Auch eine log.txt Datei wird nicht erstellt.

Seltsam: Wenn ich dasselbe Skript im Aufgabenplaner als "geplante Aufgabe" -> "benutzerdefiniertes Skript" anlege, funktioniert es ohne Probleme.

Ich denke, ich werde akzeptieren müssen, dass das Skript als "ausgelöste Aufgabe" nicht ausgeführt werden kann, warum auch immer.

Danke an alle für die Hilfestellungen.
 
Ok. Habe es jetzt hinbekommen. Das Problem besteht darin, dass der Aufgabenplaner das Skript beim Hochfahren nur als "root" ausführt und nicht als "admin". Meines Erachtens ein klarer Bug der DSM, der behoben werden sollte.
 
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