Keine Ausführung des Cronjobs

Status
Für weitere Antworten geschlossen.

ipspy4711

Benutzer
Mitglied seit
28. Okt 2013
Beiträge
25
Punkte für Reaktionen
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Fehler im Script selber?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
okay und die Abstände im crontab sind auch sicher TAB und nicht Leerzeichen?
 

ipspy4711

Benutzer
Mitglied seit
28. Okt 2013
Beiträge
25
Punkte für Reaktionen
0
Punkte
0

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 

ipspy4711

Benutzer
Mitglied seit
28. Okt 2013
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
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
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
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:

ipspy4711

Benutzer
Mitglied seit
28. Okt 2013
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
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. :(
 

DI4bI0

Benutzer
Mitglied seit
08. Mrz 2011
Beiträge
264
Punkte für Reaktionen
14
Punkte
24
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
 

ipspy4711

Benutzer
Mitglied seit
28. Okt 2013
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
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