# Cronjobs laufen nicht



## minggi (16. Dez. 2010)

Bei mir laufen keine cronjobs.
Zuerst war es mein Fehler: ich hatte das Cron limit auf 0. Nachdem ich das geändert habe liefen die Jobs aber immer noch nicht.
Nach einigem Suchen habe ich gelesen, dass es etwas mit Jailkit zu tun haben könnte. Jailkit war aber gar nicht aktiviert! Ich habe Jailkit also gestartet. Leider ergab das keine Besserung.
Frage: muss jailkit laufen? Wieso was es nicht freigeschalten?

Im Folder /etc/cron.d sehe ich die Datei ispc_web2 mit den definierten jobs darin.

Wenn ich das script mit sudo -u web2 /asdasda/asdasd laufen lasse funktioniert es.

Anmerkung: meine scripts haben kein .sh am ende (sollte doch keine Rolle spielen)

Das ISPC Cron-Protokoll bleibt leer.

Die Installation ist komplett frisch!

*Im Systemprotokoll sehe ich folgendes:*
Dec 15 23:58:01 webserver /usr/sbin/cron[439]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 15 23:59:01 webserver /usr/sbin/cron[477]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 16 00:00:01 webserver /usr/sbin/cron[519]: Permission denied
Dec 16 00:00:01 webserver /usr/sbin/cron[518]: Permission denied
Dec 16 00:00:01 webserver /usr/sbin/cron[526]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 16 00:00:01 webserver /usr/sbin/cron[521]: Permission denied


besten dank


----------



## Till (16. Dez. 2010)

Wie lautet denn der exakte Befehl den Du als cronjob angelegt hast.



> Frage: muss jailkit laufen? Wieso was es nicht freigeschalten?


Jailkit ist eine jailed shell zur Beschränkung der Rechte eines ssh users und kein daemon. Du kannst jailkit also garnicht starten und es muss folglich auch nicht gestartet sein.


----------



## minggi (16. Dez. 2010)

Ich gebe nur folgendes ein:
\srv\prog\webcam\test_upload

test_upload ist ein shell programm mit befehelen wie cp usw.
mit sudo lief es.


----------



## Till (16. Dez. 2010)

Vermutlich hast Du bei Dir jailkit für cronjobs aktiviert, was aus Sicherheitsgründen auch sehr zu empfehlen. Du musst das Script dann also ins jail legen und auch einen Pfad relativ zum jail root angeben.

Laso das jail root des web 1 des client 1 ist z.B. /var/www/clients/client1/web/, wenn Du alos ein script in einen Unterordner bin legst (/var/www/clients/client1/web/bin/test_upload) dann lautet der Aufruf im cronjob /bin/test_upload



> mit sudo lief es.


Damit kannst Du gejailte scripte nicht testen.


----------



## minggi (16. Dez. 2010)

Danke. ich werde das noch testen.

Frage: Wo wir jailkit für cronjobs aktiviert?


----------



## minggi (16. Dez. 2010)

Gemäss Anleitung habe ich den Cron Job Typ des Users auf Full Cron eingestellt. Trotzdem arbeitet er die shell nicht ab.


----------



## Till (16. Dez. 2010)

Und Du hast den cronjob auch komplett gelöscht und neu erstellt nachdem Du es im client umgestellt hast? Die Client einstellungen sind nur limits, sie beeinflussen also nur das neu erstelllen von etwas und keine bestehenden Konfigurationen.


----------



## minggi (16. Dez. 2010)

Ja habe ich.
In der DB steht zudem als type 'full'. Damit sollte es doch übernommen worden sein oder?


----------



## Till (16. Dez. 2010)

Dann schau mal Dein shell script durch, ob alle darin enthaltenen Befehle volle Pfade benutzen.


----------



## minggi (16. Dez. 2010)

Ich habe im shell script nur noch einen cp befehl mit fullpath.
Leider auch kein Erfolg...
Was kann das bloss sein?


----------



## Till (16. Dez. 2010)

Dann poste bitte mal die datei ispc_web2 aus dem cron.d Ordner sowie Dein Shellscript.


----------



## minggi (17. Dez. 2010)

ispc_web2:

MAILTO=''

*/5    *    *    *    *    web2    /srv/prog/webcam/giw_upload


shell:
#!/bin/sh
cp /srv/ftp/webcam/in/giw_*.jpg /srv/prog/webcam/giw/

Danke für den Support


----------



## Till (18. Dez. 2010)

Innerhalb von cron ist die Umgebungsvariable $PATH nicht gesetzt, deshalb musst Du in cronjobs sowie in scripten die von Cronjobs ausgeführt werden immer absolute Pfade zu allen Programmen verwenden. Hatte ich ja in #9 bereits gefragt.

Dein Scribt benutzt aber cp ohne vollen Pfad, somit kann cron cp nicht finden und das Scriptw ird zwar ausgeführt, schlägt ber fehl. Der richtige Befehl lautet:

/bin/cp /srv/ftp/webcam/in/giw_*.jpg /srv/prog/webcam/giw/


----------



## minggi (18. Dez. 2010)

Geht leider immer noch nicht.
Ich habe jetzt mal alle Cronjobs gelöscht.
Danach erscheint abber in messages immer noch ein permission denied.
könnte das etwas bedeuten?
Dec 18 20:46:01 webserver /usr/sbin/cron[24893]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 18 20:47:01 webserver /usr/sbin/cron[24922]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 18 20:48:01 webserver /usr/sbin/cron[24950]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 18 20:49:01 webserver /usr/sbin/cron[24987]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null)
Dec 18 20:50:01 webserver /usr/sbin/cron[25031]: Permission denied
Dec 18 20:50:01 webserver /usr/sbin/cron[25033]: (root) CMD (/usr/local/ispconfig/server/server.sh &> /dev/null

oder was kann ich sonst noch machen?


----------



## Till (19. Dez. 2010)

Das permission denied kann von irgend einem sytem cronjob kommen, das muss nichts mit ispconfig zu tun haben. Da Du ja alle ispconfig cronjobs geloscht hast, ist es also auch nicht von ispconfig.


----------



## minggi (19. Dez. 2010)

Ich habe jetzt mal ein script in den jail gestellt und den cronjob neu konfiguriert.

Nun sehe ich ein Permission denied mehr und das Skript wird nicht ausgeführt.

Till hast du noch eine idee?


----------



## Till (20. Dez. 2010)

Bist Du sicher, daß das script nicht ausgeführt wird? Ein Script kann aus dem Jail heraus ja nicht auf Verzeichnisse außerhalb des Jails zugreifen. Dein obiges Script würde daher in einem Jail auch nicht gehen.

Erstelle mal zum testen ein neues script welches innerhalb des jails eine neue datei mit touch anlegt. Also wenn das jail z.B. ist:

/srv/www/clients/client1/web2/ dann erstelle ein script:

#!/bin/sh
touch /tmp/test.txt


und schau dann nach ein paar Minuten nach, ob die Datei /srv/www/clients/client1/web2/tmp/test.txt angelegt worden ist.Der Pfad muss natürlich zum Pfad des Jails passen.


----------



## minggi (20. Dez. 2010)

Werde ich versuchen.
Um ganze sicher zu gehen: Wo der Pfad des Jails genau konfiguriert?


----------



## Till (20. Dez. 2010)

Der Pfad des jails wird nicht gesondert konfiguriert, er ist immer identisch mit dem Pfad des Webs, zu dem der Cronjob bzw. ssh User gehört.


----------



## minggi (20. Dez. 2010)

Ging leider nichts...
Ich habe nun den cronjob mit angepasst und einfach root als user genommen (alles ohne jail)  -> lief.
Sobald ich den user wieder eingetragen hatte, kam permission denied.
ich habe alle pfade angepast von vorn bis hinten durch ->nichts

Was kann das bloss sein?


----------

