Script nur ausführen wenn DS läuft

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

burtythekoala

Benutzer
Registriert
19. März 2018
Beiträge
5
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

Ich möchte gerne ein Skript alle 5minuten ausführen, jedoch nur dann wenn die DS sowieso online ist. Das Skript selber sollte also die DS nicht aus dem Ruhezustand aufwecken!
Gerne würde ich dies unabhängig von der Zeit machen, im Aufgabenplaner gibt es ja die Möglichkeit ein Zeitfenster auszuwählen.
Die DS ist grundsätzlich 24/7 verfügbar, soll aber weiterhin bei Nichtgebrauch in den Ruhezustand gehen.

gibt es da eine Möglichkeit?
Synologys Aufgabenplaner wie auch "cronjob" sind gemäss meiner Recherche nur in der Lage zeitabhängig Aufgaben zu starten.

Noch eleganter wäre, wenn das Skript nur ausgeführt wird wenn sich in einem definierten Verzeichnis etwas ändert, sprich eine Datei hochgeladen wird, das scheint mir aber noch schwieriger zu bewerkstelligen..


Habe die DS918+ mit aktuellem DSM.


Ich danke euch!
 
Ich möchte gerne ein Skript alle 5minuten ausführen, jedoch nur dann wenn die DS sowieso online ist. Das Skript selber sollte also die DS nicht aus dem Ruhezustand aufwecken!

Kurze Frage! Wie soll die DS denn in den Ruhezustand gehen, wenn alle 5 Minuten ein Script läuft?
 
Ich lasse Scripte auch zyklisch laufen.
Jedoch wird das Script erst dann aktiv, wenn eine bestimmte Bedingung vorliegt.

Zum Beispiel etwa so:
Rich (BBCode):
################################################################################
### Kopieren der Logfiles von /var/log in den Ordner _SYSTEMPROTOKOLLE_
export SOURCE='/var/log/'
export DESTIN='/volume1/_SYSTEMPROTOKOLLE_/myroot/var/log'


if [ -d ${DESTIN} ]
  then
    # Jetzt wird kopiert
    mkdir -p $DESTIN
    echo /bin/rsync -rau --delete-before --ignore-errors $SOURCE $DESTIN
    /bin/rsync -rau --delete-before --ignore-errors $SOURCE $DESTIN
    chown USER:GROUP -R $DESTIN
    chmod -R 770 $DESTIN
  else
    # Zielverzeichnis nicht vorhanden
    exit 0
fi

Ob dadurch die die DS 'aufwacht', weiss ich nicht, weil ich den Ruhezustand nicht nutze ...
 
...Noch eleganter wäre, wenn das Skript nur ausgeführt wird wenn sich in einem definierten Verzeichnis etwas ändert, sprich eine Datei hochgeladen wird, das scheint mir aber noch schwieriger zu bewerkstelligen..
Nein, das ist relativ einfach. Dazu gibt es das Tool inotifywait. Das ist im iPKG drin :)

Ich hatte das auch mal dazu genutzt um auf eine Dateiinhaltsaenderung zu reagieren. Ansonsten habe ich gerade letztens einen kleinen Verzeichnisupdatelistener mit inotifywait geschrieben um eingehende SMS per eMail weiterzuschicken. So aehnlich muesste Dein Script dann auch aussehen: In einer Endlosschleife auf neue Dateien in einem Verzeichnis warten und dann Deine gewuenschte Aktion initieren. Die Frage ist nur ob inotifywait die Syno nicht immer wieder aufweckt.
 
Zuletzt bearbeitet:
Der Ruhezustand der HDDs wird nicht direkt vom NAS (bzw. dem DSM) bestimmt, sondern wird durch die Firmware der HDDs gesteuert.
Wenn also ein Zugriff durch das Linuxsystem auf die HDDs erfolgt, läuft die eingestellte Zeit wieder von vorne los bzw. die HDDs wachen auf, wenn sie schon um Ruhezustand sind.

Man könnte jetzt probieren alle 5min durch ein Bash-Script ein Verzeichnis überwachen zu lassen und schauen, ob das Linuxsystem nun alle 5min physisch auf der HDD nachschaut (und damit den Ruhezustand verhindert) oder so schlau ist das Ergebnis aus dem Cache zu lesen. Ich habe es selber noch nie probiert. Probiere es aus und berichte.

Kleines Testscript (aus der Hüfte geschossen, ohne Gewähr):
Rich (BBCode):
cd /volume1/dein/Verzeichnis
list=$(echo *)
if [ "$list" = "*" ] || [ "$list" = "@eaDir" ]
then
echo "Verzeichnis leer"
else
echo "Verzeichnis nicht leer"
fi
 
@AndiHeitzer
"rsync --delete-before --ignore-errors" könnte unerwünschte Ergebnisse zeitigen, falls dabei was schiefgeht.
 
Ich habe die Parameter irgendwo aus dem I-Net.
Ein Linuxianer bin ich nicht, aber selber was zusammensuchen und daraus basteln, ja, das mach ich.

Magst Du mir bitte verraten, wo es denn im Zweifelsfall klemmen könnte?
Ein Fallbeispiel reicht mir, um das evtl. zu begreifen.
 
"rsync --delete-before" löscht, bevor das Kopieren beginnt, alles. Wenn etwas schiefgeht, sind die am Ziel zuvor vorhandenen Dateien möglicherweise gelöscht, ohne dass neue nachkommen. Früher war "--delete-after" Standard, d. h. es wurden temporäre Dateien erzeugt und die alten im Erfolgsfall am Ende 'am Stück' durch die neuen ersetzt. Inzwischen ist der Standard "--delete-during", d. h. er kopiert/ersetzt abwechselnd, was Platz spart aber Performance kostet.

--delete-before receiver deletes before xfer, not during
--delete-during receiver deletes during the transfer
--delete-after receiver deletes after transfer, not during

man 1 rsync
 
Kleines Testscript (aus der Hüfte geschossen, ohne Gewähr):
Rich (BBCode):
cd /volume1/dein/Verzeichnis
list=$(echo *)
if [ "$list" = "*" ] || [ "$list" = "@eaDir" ]
then
echo "Verzeichnis leer"
else
echo "Verzeichnis nicht leer"
fi

Habe das Skript auf mich angepasst und läuft soweit einwandfrei, vielen Dank dafür!
Ob der Ruhezustand verhindert wird kann ich noch nicht mit Gewissheit sagen, habe allerdings den Ruhezustand auf 10min gesetzt und vorhin über den Zeitraum einer Stunde das LAN Kabel gezogen, somit hatte es keine Zugriffe auf die DS. Trotzdem ist die DS nie in den Ruhezustand gegangen. Ich werde zukünftig mal beobachten ob die DS in den Ruhezustand geht, ich vermute allerdings dass das Skript die DS vom "schlafen" abhält.
 
Zuletzt bearbeitet von einem Moderator:
Falls der Ruhezustand verhindert wird, wäre es je nach Anwendungsfall vielleicht eine Option das Script nur tagsüber laufen zu lassen. So würden die HDDs wenigstens nachts in den Ruhezustand wechseln.
 
Ja, habe dies vorerst mal so eingerichtet.

praktisch wäre, wenn synology dies von Haus aus so vorsehen würde, dass zB eine Aufgabe mit dem Zusatz "nur bei aktiver DS ausführen" eingerichtet werden kann.

Ich danke euch für eure Inputs!
 
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