[geloest] Cronjob wird nicht ausgeführt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
HerrDerb
Beiträge: 2
Registriert: 01.04.2015 16:41:31

[geloest] Cronjob wird nicht ausgeführt

Beitrag von HerrDerb » 01.04.2015 16:52:55

Hallo zusammen
Mit einem Cronjob will ich täglich ein Python-Script ausführen.

Zum Test habe ich nun ein TestScript erstellt, welches den aktuellen Zeitpunkt einer txt Datei anhängt. Im Terminal mit sudo ausprobiert -> funktioniert.

Nun habe ich mit sudo crontab -e ein neues crontab erstellt mit folgendem Inhalt

Code: Alles auswählen

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

*/1 * * * * /usr/bin/python /home/admin/testCron.py

Nach dem ich den Editor wieder geschlossen und gespeichert habe, erscheint die Meldung "crontab: installing new crontab"

Ich erwarte, dass jetzt jede Minuter ein Eintrag mit der aktuellen Zeit in die Text-DAtei gemacht wird. Leider passiert nichts....
Das Kommando, so wie es angegeben ist, funktioniert im Terminal einwandfrei, ob sudo oder als admin.

An was könnte es liegen, dass der cronjob trotzdem nicht ausgeführt wird?

Benutzeravatar
TRex
Moderator
Beiträge: 8319
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Cronjob wird nicht ausgeführt

Beitrag von TRex » 01.04.2015 18:31:43

Hast du ein newline am Ende? Und ins syslog geschaut?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Cronjob wird nicht ausgeführt

Beitrag von novalix » 01.04.2015 18:37:16

Hi,
ich habe noch nicht so viel mit python rumgespielt, deswegen erhebe ich keinen Anspruch auf Richtigkeit.
Es kann sein, dass

Code: Alles auswählen

/usr/bin/python /pfad/zum/script.py
nur in einem Terminal funktioniert. Jedenfalls verstehe ich so die man page.
Du solltest Dein script mit dem entsprechenden She-Bang ausstatten

Code: Alles auswählen

#!/usr/bin/python
und ausführbar machen

Code: Alles auswählen

chmod +x /pfad/zum/script.py
Dann kannst Du in Deiner crontab das /usr/bin/python weglassen und einfach den Pfad zum script als Programmaufruf benutzen.
Als Randnotiz:
Es macht keinen Sinn eine User-Crontab mit sudo anzulegen. Wenn Du für einzelne Programmaufrufe in der crontab Administratorrechte brauchst, die Dir über die sudoers passwortlos zugewiesen sind, kannst Du diese Programme einzeln mit vorangestelltem "/usr/bin/sudo" aufrufen.
Wenn Du eh der Administrator der Maschine bist, solltest Du lieber entsprechende Dateien unter "/etc/cron.d/" anlegen, wenn die Ausführung Root-Rechte braucht.

Groetjes, niels
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

HerrDerb
Beiträge: 2
Registriert: 01.04.2015 16:41:31

Re: Cronjob wird nicht ausgeführt

Beitrag von HerrDerb » 08.04.2015 09:16:30

Hello, thanks for the tipps.

I finally got it working. There indeed must have been a problem that I startet crontab with sudo. I created a crontab for the admin user instead and took the sudo into the command in the crontab.
With this it does work now.

Code: Alles auswählen

*/1 * * * * sudo /usr/bin/python /home/admin/testCron.py

Thanks a bunch

Antworten