PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cron Jobs freeNAS



xeinx
23.07.13, 19:52
Hallo ich habe mal eine Frage.

Ich habe wie der Titel schon sagt ein NAS mit OS freenas 9.1, der Cron Job ist eingerichtet und funktioniert.

Was ich aber gerne hätte wäre eine rückmeldung das er den dienst gestartet hat.
Also hier mal ausführlich! Ich habe ein automatisches runterfahren wenn x PC nicht mehr im Netz ist.
wenn ich das script per shell über sh shutdown.sh aufrufe bekomme ich das echo wie es im script eingetragen ist. über den cron-job macht er die funktion aber das echo kommt nicht.

vielleicht könnt ihr mir das helfen

lg xenix

DrunkenFreak
23.07.13, 20:05
Es ist gut möglich, dass cron eine andere Shell benutzt. Nutze einfach /bin/echo.

xeinx
23.07.13, 20:15
also meinst du im cron zusätzlich /bin echo xxxtext ?
wenn ja wäre das ja nur das er das ausgeführt hat. wäre ne not lösung.
ich möchte ja das dass was im script steht ausgelesen wird

tictactux
23.07.13, 20:28
hallo,

cronjobs schreiben nicht auf die standard/fehler-Ausgabe- das ist kein Bug sondern feature- schließlich laufen die Jobs als Hintergrundprozesse.

Schau mal ob es /usr/bin/logger auf dem System gibt, und benutze den statt echo.

Sowohl cron als auch logger haben übrigens man-pages ;)

HTH

PS: natürlich ginge auch das Umleiten von echo in eine Datei... (echo "ich kann schreiben. Juchu!" >/tmp/denkste)

xeinx
23.07.13, 20:35
also logger befindet sich im verzeichnis /usr/bin

so als frischling was ist mit
Sowohl cron als auch logger haben übrigens man-pages gemeint

xeinx
23.07.13, 20:37
hier mal das script was ich nutzen möchte vielleicht könnt ihr hier mir genau sagen was ich daran ändern muss damit es funzt :-)


#!/bin/bash

HOST1=192.168.1.77

_exit () {
case $1 in
1) echo "Kein Shutdown - Mindestens einer der PCs ist eingeschaltet" ;;
2) echo "Kein PC online - Shutdown" ; shutdown -p now ;;
esac
exit $1;
}

# Checken ob PC's an sind
if [ `ping -c 1 -i 1 $HOST1 | grep -wc 100.0%` -eq 0 ] ; then _exit 1;


# Wenn kein PC an ist, 120 sec warten falls gerade einer Neu startet
else
echo "Kein PC online - Warte 120 Sekunden"
sleep 120

# noch mal PC's checken
if [ `ping -c 1 -i 1 $HOST1 | grep -wc 100.0%` -eq 0 ] ; then _exit 1;


# Wenn kein PC an ist, gehe zu exit case 2 (Shutdown)
else
_exit 2
fi
fi

tictactux
23.07.13, 20:39
Hi,

man-pages=manual pages, zu lesen mit "man logger" z.b., falls sie auf so einem Gerät wie nem NAS (mit oft begrenztem Speicher) überhaupt installiert sind.

Rain_maker
23.07.13, 20:47
... falls sie auf so einem Gerät wie nem NAS (mit oft begrenztem Speicher) überhaupt installiert sind.

.. was allerdings auch nicht wirklich ein Problem ist, da es praktisch jede man page auch online verfügbar gibt.

Einfach

"man page <gewünschter Befehl>"

in die Suchmaschine des geringsten Misstrauens eingeben, unter den ersten fünf Treffern wird man praktisch immer fündig.

Greetz,

RM

tictactux
23.07.13, 20:50
zu deinem Script: ich würde ne Shell funktion schreiben statt der vielen echos.
z..b.




function myecho() {
logfile=/var/log/`/bin/date -I`-myjob.log
/usr/bin/touch $logfile

echo "$*" >>$logfile
}


und in dem Script änderst dann "echo" in "myecho", wobei die logdatei wegen dem obigen "date -I" täglich umbenannt und neu angelegt wird.


PS: falls du stattdessen logger einsetzen willst an Stelle von echo, werden die Ausgaben ins Systemlog unter /var/log geschrieben

xeinx
23.07.13, 20:59
ok super dank für die schnellen antworten das script habe ich bekommen und ich habe es nur angespasst.
das mit dem log finde ich super so kann ich mir das anschauen ob er das alles ausführt weil in der shell guckt man später ja eh nie rein. es ist nur an anfang zu überprüfungszwecken gedacht

xeinx
23.07.13, 21:14
so mal umgesetzt und nun erhalte ich den fehler 3: Syntax error: "(" unexpected

reno
24.07.13, 11:43
Wie hast du es denn umgesetzt? Poste doch mal das ganze Skript.