Keine Ausführung des Cronjobs

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

ipspy4711

Benutzer
Registriert
28. Okt. 2013
Beiträge
25
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

das Thema wurde schon öfters aufgegriffen - ich habe mir die bisherigen Posts auch durchgelesen. Allerdings gibt es für mein Problem noch keine Lösung. :(

Ich habe ein Skript, dass ich alle 5 Minuten ausgeführt haben möchte. In der crontab habe ich hierfür den folgenden Eintrag gemacht:
Rich (BBCode):
5   *   *   *   *   root   /bin/sh /volume2/scripts/rsync.sh

Das Skript liegt unter dem angegebenen Pfad. Es hat folgende Berechtigungen
Rich (BBCode):
-rwxrwxrwx  1 root  root    1754 Jan  8 15:51 rsync.sh

Ich habe ein cron.log eingerichtet, um zu sehen, was aus der crontab aufgerufen wird. Leider ist mein Skript nicht dabei, ich weiß aber auch nicht, was ich falsch mache. Wenn ich das Skript manuell aufrufe, funktioniert es einwandfrei.

Weiß jemand Rat?

LG
ipspy
 
Fehler im Script selber?
 
okay und die Abstände im crontab sind auch sicher TAB und nicht Leerzeichen?
 
Zeig doch bitte den Quellcode. Es gibt einige Sachen die auf der Konsole funzen in einem Cronjob aber nicht. Häufig: man vergisst bei Kommandos die vollständigen Pfade anzugeben. Cron hat eine eigene PATH Umgebung, die durchaus unterschiedlich zum PATH der lokalen Shell sein kann
 
Ich habe darin eigentlich immer absolute Pfade angegeben. Aber vielleicht hab ich einen übersehen. Bitte nicht wegen des Codes erschrecken. Bin noch Anfänger im "bashen". :)
Der Code des rsync.sh:

Rich (BBCode):
#!/bin/bash
`rm /tmp/rsync_file_list*`
export USER="<Username>"
export SERVER="<Server-Name>"
export PORT="43022"
export SOURCE="/volume2"
export TARGET="/data/"
export LOG_DIR="/volume2/scripts/logs/rsync/$(date +%Y%m%d)"
`mkdir -p $LOG_DIR`
`chmod 777 $LOG_DIR`
export LOG="$LOG_DIR/rsync_$(date +%Y%m%d_%H%M).log"

export SYNC_DIRS="/volume2/@dir1@ /volume2/@dir2@ /volume2/@dir3@ /volume2/@dir4@"

export PROCS=3
export PROCS_MAX=$(( $PROCS-1 ))
PID=`ps | grep rsync | egrep '.*<Server-Name>.*data.*' | awk ' { print $1}'`
HOUR=`date +"%H"`
if [ -n "$1" ]
then
        HOUR=$1
fi
echo "##########################################################" >> $LOG
echo "beginne rsync ($(date +%F#%T))" >> $LOG

for SYNC_DIR in $SYNC_DIRS 
do
	cd $SYNC_DIR
	echo "Erstelle File-List ($SYNC_DIR)" >> $LOG
	find . -not -path '*eaDir*' ! -name 'Thumbs.db' | awk -v dirname=$SYNC_DIR ' {print dirname "/" $0 }' | sed 's/\/.\//\//g;s/\/volume2//g' | sed -r 's/(\/.$|rsync_file_list)//g' >> /tmp/rsync_file_list 2>> $LOG
done

echo " " >> $LOG
if [ "$HOUR" -le "5" ] || [ "$HOUR" -ge "22" ]
then
	if [ -z "$PID" ]
	then
		echo "Sync laeuft nicht, wird gestartet!" >> $LOG
		for i in $(seq 0 $PROCS_MAX)
		do
			sed -n "$i~$PROCS"p /tmp/rsync_file_list > /tmp/rsync_file_list_$i
			rsync --delete --files-from=/tmp/rsync_file_list_$i -avze "ssh -p 60022" $SOURCE $USER@$SERVER:$TARGET >> $LOG 2>> $LOG
		done
	fi
else
	echo "Sync verboten!" >> $LOG
	if [ -n "$PID" ]
        then
                echo "Sync laeuft, wird beendet!"
                for p in $PID
                do
                        kill -HUP $p
                done
        fi
fi

echo " " >> $LOG
echo "rsync beendet ($(date +%F#%T))" >> $LOG
echo " " >> $LOG
echo " " >> $LOG
 
Hallo zusammen,

das Thema wurde schon öfters aufgegriffen - ich habe mir die bisherigen Posts auch durchgelesen. Allerdings gibt es für mein Problem noch keine Lösung. :(

Ich habe ein Skript, dass ich alle 5 Minuten ausgeführt haben möchte. In der crontab habe ich hierfür den folgenden Eintrag gemacht:
Rich (BBCode):
5   *   *   *   *   root   /bin/sh /volume2/scripts/rsync.sh

Das Skript liegt unter dem angegebenen Pfad. Es hat folgende Berechtigungen
Rich (BBCode):
-rwxrwxrwx  1 root  root    1754 Jan  8 15:51 rsync.sh

Ich habe ein cron.log eingerichtet, um zu sehen, was aus der crontab aufgerufen wird. Leider ist mein Skript nicht dabei, ich weiß aber auch nicht, was ich falsch mache. Wenn ich das Skript manuell aufrufe, funktioniert es einwandfrei.

Weiß jemand Rat?

LG
ipspy

So wie du deinen cron geschrieben hast, wird er fünf Minuten nach jeder vollen Stunde ausgeführt.
Wenn du möchtest, das er alle 5 minuten ausgeführt werde soll, musst du das so schreiben:
Rich (BBCode):
*/5   *   *   *   *   root   /bin/sh /volume2/scripts/rsync.sh
 
Zuletzt bearbeitet:
Wenn du möchtest, das er alle 5 minuten ausgeführt werde soll, musst du das so schreiben:
Rich (BBCode):
*/5   *   *   *   *   root   /bin/sh /volume2/scripts/rsync.sh

Danke für den Tipp - das hatte ich übersehen. Leider läufts trotzdem nicht. :( Hab jetzt testhalber einen neuen Eintrag gemacht:

Rich (BBCode):
*/1     *       *       *       *       root    touch /volume2/scripts/test.txt
Aber das File wird nicht angelegt. :(
 
Hast du den cron auch neugestartet nachdem du die crontab Datei editiert hast?
Wenn nicht:
Rich (BBCode):
/usr/syno/etc.defaults/rc.d/S04crond.sh stop
und dann
/usr/syno/etc.defaults/rc.d/S04crond.sh start
 
Hast du den cron auch neugestartet nachdem du die crontab Datei editiert hast?

DANKE! Das war der Bug. Ich hatte darauf vertraut, dass die GUI von Itari den cron neustartet - aber das hat wohl nicht funktioniert! Da werd ich mich mal dahinterklemmen!
 
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