crontab /etc/crontab script wird nicht ausgeführt

Status
Für weitere Antworten geschlossen.

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Hi,
ich bin neuer Besitzer eines 1511+.

Unter /etc/crontab hab ich folgendes eingetragen:
~
#minute hour mday month wday who command
0 0 * * * root /usr/sbin/ntpdate -b de.pool.ntp.org
20 20 * * * backup_tmh /volume1/homes/backup_tmh/backup/backup_tmh.sh
35 17 * * * backup_tmh /volume1/homes/backup_tmh/backup/backup_tmh.sh
~
Wenn ich mich als user "backup_tmh" einlogge und den Pfad direkt kopiere funktioniert das Script.
Hat da mal jemand eine Idee warum das nicht funktioniert?

Wäre Prime
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
cron anschließend neu gestartet? Ansonsten bin ich nicht ganz sicher, ob von root abweichende Nutzer überhaupt mit dem eingebauten cron gehen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
In der /etc/crontab sollte (!!!!) man immer die kompletten Pfade für ein Programm, Skript oder eine Datei angeben, da man ja nicht eingelogt ist und der login-Prozess ja nicht unbedingt genau das Environment eingerichtet hat, was man sonst kennt (insbesonderen die PATH-Variable ist meist nur rudimentär belegt). Auch sollte oben der user 'root' als Positionsparameter definiert sein, denn ein anderer User wird sowieso nicht genommen.

Itari
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
sh-Scripte rufe ich immer so auf:

sh /pfad/zum/script.sh

Das Script muss natürlich chmod +x haben.


Gruss ubuntulinux
 

janus

Benutzer
Mitglied seit
07. Sep 2010
Beiträge
667
Punkte für Reaktionen
0
Punkte
0
Moin,
1. Hast du das Magic im Script drin? Also 1. Zeile
#!/bin/sh

2. Häng mal an den Cron hinten ein "2>&1 >> /tmp/backup_tmh.log" an

3. Hänge an das #!/bin/sh ein "-x" an.

dann schau in das Logile, sobald dein cronjob exekutiert wurde.

Gruß

Janus
 
Zuletzt bearbeitet:

janus

Benutzer
Mitglied seit
07. Sep 2010
Beiträge
667
Punkte für Reaktionen
0
Punkte
0
@ubuntulinux:

Moin,
kann man so machen,
besser ist aber +x und das Magic #! im script für die 1. Zeile. Das stellt dann auch sicher, dass der richtige Interpreter am Script arbeitet. Statt /bin/sh wird ja auch oft /bin/bash verwendet.
Ok, das ist unter Linux meist das gleiche, aber zsh, ash, perl oder oder oder können auch für ein Script verwendet werden. Solaris z.B. hat definitiv keine bash in der default shell, was dann schief gehen kann, wenn man seine Script schlampig und ohne magic baut.

Wenn man sich nicht sicher ist, welches Environment der cron zur verfügung hat, dann hilft ein kleines Script mit einer umleitung für das "set" commando. Das kann man dann mit dem "set" der benutzten Shell vergleichen und dann ggf. auch auf die richtigen Ideen kommen.

Gruß

Janus
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
Schon klar, gibt aber mehr Aufwand ;)
 

janus

Benutzer
Mitglied seit
07. Sep 2010
Beiträge
667
Punkte für Reaktionen
0
Punkte
0
@ubuntulinux
Das kommt darauf an, wie man es sieht. Entweder man schreibt ein paar Zeichen mehr mit in ein Script oder man muss später länger nach den Fehlern suchen.

Man muss nur die "richtige" variante seiner Faulheit einsetzen, dann macht es später nicht so viel Arbeit ;-)

Gruß

Janus
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Hallo Miteinander,
Unter /var/log/messages gibt es keine Einträge zu cron.
Zu 2. Häng mal an den Cron hinten ein "2>&1 >> /tmp/backup_tmh.log" an
Probier ich gerade mal aus, mal schauen ob es hilft. Gefühlt würde ich sagen, daß es nicht ausgeführt wird.
also das Skript sieht so aus:
#!/bin/sh
datum_start=`/bin/date`
/bin/echo "Backup start um: "$datum_start >> /volume1/homes/backup_tmh/backup/backup.log
/bin/echo "Backup wird gestartet"
/bin/echo " "
/bin/echo " "
/bin/echo " "
/usr/syno/bin/rsync -abv admin@192.168.12.223:/share/MD0_DATA/communigate /volume1/homes/backup_tmh/backup/
datum_ende=`/bin/date`
/bin/echo "Backup stop um: "$datum_start >> /volume1/homes/backup_tmh/backup/backup.log
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
funktioniert denn ein einfacher "/bin/echo huhu >>/tmp/log", wenn du ihn in die crontab schreibst? Im Moment rätselt ja jeder darüber, ob es am aufgerufenen Skript oder an der crontab-Eintragung liegt ... damit könntest etwas Klarheit rein bekommen.

Itari
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Also,
hab jetzt das mal als root getestet:
crontab sieht so aus und crond ist neu gestartet, as usual
#minute hour mday month wday who command
0 0 * * * root /usr/sbin/ntpdate -b de.pool.ntp.org
43 18 * * * root /bin/echo hallo >> /var/log/messages
#20 20 * * * backup_tmh /volume1/homes/backup_tmh/backup/backup_tmh.sh 2>&1>>/var/log/message
#35 18 * * * backup_tmh /volume1/homes/backup_tmh/backup/backup_tmh.sh 2>&1>>/var/log/message

UND ...
als root geht es schon mal
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Wenn Du unbedingt als anderer User ausführen willst, versuche es mal mit sudo (per IPKG installiert). Sähe dann so aus:

Code:
20 20 * * * root /opt/bin/sudo -u backup_tmh /volume1/homes/backup_tmh/backup/backup_tmh.sh 2>&1>>/var/log/message

gruss
dude
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
oh,
an sudo hab ich noch gar nicht gedacht.
Bei unseren Servern funktioniert das alles auch mit benutzerangabe.
Aber gut, unter linux gibt es ja 1000 wege zum ziel.

Mein backup_sync script sieht jetzt übrigens so aus:
#!/bin/sh -x
datum_start=`/bin/date`
/bin/echo "Backup start um: "$datum_start >> /volume1/homes/backup_tmh/backup/backup.log
/bin/echo "Backup wird gestartet"
/bin/echo " "
/bin/echo " "
/bin/echo " "
/usr/syno/bin/rsync -abv admin@192.168.12.223:/share/MD0_DATA/communigate /volume1/homes/backup_tmh/backup/
datum_ende=`/bin/date`
/bin/echo "Backup stop um: "$datum_start >> /volume1/homes/backup_tmh/backup/backup.log
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Also mit sudo ruft er das script auch nicht auf.
Ich denke fast, es könnte ein bug sein
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
jetzt schreib doch mal nur den 'echo' in dein Skript und starte das per crontab als User 'root' ohne sudo ... wenn Erfolg, dann hätten wir schon mal herausbekommen, ob der Pfad zu deinem Skript überhaupt vom crond gefunden wird. Der crond muss ja auch erstmal auf dein Skript zugreifen dürfen ...

Itari
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
So,
ich hab das nun als root gemacht, und das script auch mal woanders hingelegt. Manchmal werden die Homeverzeichnisse unter linux nicht mir execute gemounted.
#minute hour mday month wday who command
0 0 * * * root /usr/sbin/ntpdate -b de.pool.ntp.org
24 20 * * * root /volume1/backup_tmh/scripte/backup_tmh.sh 2>&1>> /var/log/message


Kein Log in messages
Ich werd noch wahnsinnig mit dem ding!
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
sorry,
echo im crontab funktioniert, habs vergessen zu posten
 

krischeu

Benutzer
Mitglied seit
20. Jul 2011
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
per cut n paste funktioniert der aufruf des scriptes.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
sorry,
echo im crontab funktioniert, habs vergessen zu posten

dann ergänze jetzt zeilenweise das echo-Skript mit den Anweisungen des anderes Skript und teste nach jeder Zeile, damit du herausbekommst, an welcher Geschichte es blockiert ...

Itari
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Es heisst übrigens /var/log/messages. Nicht das es am ende noch daran liegt. ;)

Und die einzelnen Felder dürfen nur mit TAB getrennt sein. Nicht mir Leerzeichen. Siehe wiki.

gruss
dude
 
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