cron führt script in cron.daily nicht aus

Lutz Willek lutz.willek at belug.de
Mit Apr 2 08:49:19 BST 2008


Keywan Najafi Tonekaboni schrieb:
> Hi,
> 
> Am Dienstag, den 01.04.2008, 21:36 +0200 schrieb Thilo Six:
>>> das hat nichts mit dem link zu tun. Versuch mal aus 
>>>
>>> "#!/bin/bash" "#!/bin/sh" zu machen. 
>> ...also andersherum würde ich das verstehen.
> 
> Würde ich auch sagen, aber mein Skript fängt tatsächlich auch mit
> "#!/bin/sh" an.

Wow, ich teste das jetzt auf einem Debian und einem Ubuntu durch.

Der Testlauf wird genau für die Debianmaschine beschrieben, auf dem 
Ubunturechner ist er identisch, deshalb poste ich nur die geänderten 
Ergebnisse. Die Mail schreibe ich während des Testlaufes mit.

Auf Rechner1, ein Debian Sid:

PS1="root at debian #"
root at debian #cat /etc/debian_version
lenny/sid
root at debian #ls -l /bin/sh
lrwxrwxrwx 1 root root 4  1. Apr 05:26 /bin/sh -> bash*
root at debian #cat <<- EOF > /tmp/testscript
	#!/bin/bash
	# macht einen Logeintrag, damit man feststellt ob
	# das skript läuft
	logger "Jaaaaa, der Holzmichel lebt noch (tmp, bash)"
	EOF
root at debian #cat <<- EOF > /tmp/testscript2
	#!/bin/sh
	# macht einen Logeintrag, damit man feststellt ob
	# das skript läuft
	logger "Jaaaaa, der Holzmichel lebt noch (tmp, sh)"
	EOF
root at debian #chmod +x /tmp/testscript
root at debian #chmod +x /tmp/testscript2
root at debian #/tmp/testscript
root at debian #/tmp/testscript2
root at debian #grep Holzmichel /var/log/messages|awk -F: '{print $1":"$2" 
"$4 }'
Apr  2 09:12  Jaaaaa, der Holzmichel lebt noch (tmp, bash)
Apr  2 09:12  Jaaaaa, der Holzmichel lebt noch (tmp, sh)

Die beiden "Skripte" laufen also. Jetzt werden die beiden Skripte nach 
/etc/cron.daily verlinkt und zusätzlich noch einmal unter einem neuen 
Namen dort hin kopiert:

root at debian #ln -s /tmp/testscript /etc/cron.daily/
root at debian #ln -s /tmp/testscript2 /etc/cron.daily/
root at debian #sed 's/tmp, /cron, /' \
</tmp/testscript >/etc/cron.daily/testscript_
root at debian #sed 's/tmp, /cron, /' \
</tmp/testscript2 >/etc/cron.daily/testscript2_

Das ganze sieht so aus:
root at debian #ls -l /etc/cron.daily/test*
lrwxrwxrwx 1 root root  15  2. Apr 09:00 /etc/cron.daily/testscript -> 
/tmp/testscript
-rwxr-xr-x 1 root root 137  2. Apr 09:09 /etc/cron.daily/testscript_
lrwxrwxrwx 1 root root  16  2. Apr 09:00 /etc/cron.daily/testscript2 -> 
/tmp/testscript2
-rwxr-xr-x 1 root root 133  2. Apr 09:09 /etc/cron.daily/testscript2_

cron.daily wird einmal per Hand angestoßen. Nicht zu Hause nachmachen! 
Ich habe vorher alle anderen Skripte aus dem Verzeichnis entfernt.

run-parts --report /etc/cron.daily

und die Ergebnisse sind (trommelwirbel...)

root at debian #grep Holzmichel /var/log/messages|awk -F: '{print $1":"$2" 
"$4 }'

Apr  2 09:12  Jaaaaa, der Holzmichel lebt noch (tmp, bash)
Apr  2 09:12  Jaaaaa, der Holzmichel lebt noch (tmp, sh)
Apr  2 09:19  Jaaaaa, der Holzmichel lebt noch (tmp, bash)
Apr  2 09:19  Jaaaaa, der Holzmichel lebt noch (tmp, sh)
Apr  2 09:19  Jaaaaa, der Holzmichel lebt noch (cron, sh)
Apr  2 09:19  Jaaaaa, der Holzmichel lebt noch (cron, bash)

es funktioniert also *immer* auf Debian sid. Das gleiche jetzt auf einem 
Ubuntu-Rechner. Dazu habe ich aus meinem Testlauf ein tar erstellt und 
auf dem anderen Rechner mitgenommen:
root at debian #tar cf testsuite.tar \
		/etc/cron.daily/testscr* \
		/tmp/testscr*

Das System auf dem anderen Rechner:
Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]
PS1="root at ubuntu # "

Es existiert ein Unterschied zw. Debian und Ubuntu, das kann aber auch 
meinem Setup geschuldet sein:

root at ubuntu # ls -l /bin/sh
lrwxrwxrwx 1 root root 4 1997-01-01 04:33 /bin/sh -> dash

root at ubuntu # cd /
root at ubuntu # tar xvf testsuite.tar
etc/cron.daily/testscript
etc/cron.daily/testscript_
etc/cron.daily/testscript2
etc/cron.daily/testscript2_
tmp/testscript
tmp/testscript2

Dann wurde der Testlauf wieder per Hand angestoßen:

root at ubuntu # run-parts --report /etc/cron.daily

root at ubuntu # grep Holzmichel /var/log/messages|awk -F: '{print $1":"$2" 
"$4 }'
Apr  2 09:36  Jaaaaa, der Holzmichel lebt noch (tmp, bash)
Apr  2 09:36  Jaaaaa, der Holzmichel lebt noch (tmp, sh)
Apr  2 09:36  Jaaaaa, der Holzmichel lebt noch (cron, sh)
Apr  2 09:36  Jaaaaa, der Holzmichel lebt noch (cron, bash)

Also auch hier: alle Möglichkeiten funktionieren.


Fazit: an den symbolischen Links kann es nicht direkt liegen, das es 
einmal funktioniert und ein anderes mal nicht. Dennoch kenne ich dieses 
Problem aus eigener Erfahrung, auch der OP hatte ja die gleichen 
Probleme. Es muss also noch ein Detail existieren, das wir übersehen.

Ich werde auf dem Ubunturechner die Dateien liegen lassen und einen 
normalen cronlauf abwarten, um den Einfluß von Umgebungsvariablen 
auszuschließen. Ich berichte wieder. Bis dort hin: noch irgendwelche 
anderen Ideen, an was dieses Verhalten liegen kann?


-- 
Freundliche Grüße / Best Regards

         Lutz Willek

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~        Have you tried turning it off and on again?             ~
~ Bitte denken Sie an die Umwelt bevor Sie diese Mail ausdrucken ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~