crontab /etc/crontab script wird nicht ausgeführt

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

krischeu

Benutzer
Registriert
20. Juli 2011
Beiträge
72
Reaktionspunkte
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
 
cron anschließend neu gestartet? Ansonsten bin ich nicht ganz sicher, ob von root abweichende Nutzer überhaupt mit dem eingebauten cron gehen.
 
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
 
sh-Scripte rufe ich immer so auf:

sh /pfad/zum/script.sh

Das Script muss natürlich chmod +x haben.


Gruss ubuntulinux
 
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:
@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
 
Schon klar, gibt aber mehr Aufwand ;)
 
@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
 
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
 
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
 
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
 
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
 
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
 
Also mit sudo ruft er das script auch nicht auf.
Ich denke fast, es könnte ein bug sein
 
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
 
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!
 
sorry,
echo im crontab funktioniert, habs vergessen zu posten
 
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
 
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