# Frage zu Cronjobs



## logifech (23. Apr. 2015)

Hallo Zusammen,
und zwar hab eich da mal eine kurze Frage, ich habe als kunde einen Cron JOB angelegt diesem Kundne habe ich aber nur URL Crons erlaubt. nun die Frage ich habe eine Wordpress Installation unter einer zusatz PHP version laufen nun habe ich folgendes beim Cron job eingetragen.
"/opt/php-5.5.24/bin/php /var/www/clients/clientx/webx/web/wp-cron.php" eingetragen. Jetzt habe ich mich dann gestern nochmal per ftp auf dem Webspace vernbunden und siehe da dort wurden viele verschiedene verzeichnisse angelegt "bin, dev, etc, lib, lib64, usr, var" nun stellt sich mir die Frage warum?? Ich habe keinen SSH user angelegt lediglich den cron.


----------



## Till (23. Apr. 2015)

Du hast wahrscheinlich einen jailed cronjob angelegt und diese Verzeichnisse gehören zum jail.


----------



## logifech (23. Apr. 2015)

Ok, das ist merkwürdig, da ich definitiv als Kunden Limit URL Cron aktiviert habe.


----------



## Till (23. Apr. 2015)

Zitat von logifech:


> Ok, das ist merkwürdig, da ich definitiv als Kunden Limit URL Cron aktiviert habe.


Du hast den cronjob aber sicherlich als admin und nicht als Kunde angelegt? Denn der obige cronjob ist ja kein url cron sondern ein shell cronjob vom befehl her und als Admin kannst Du dich natürlich über Kunden Limits hinweg setzen. Wenn es ein URL Cronjob wäre, dann würde der Befehl mit http:// bzw https:// anfangen (halt einer URL).


----------



## logifech (30. Juli 2015)

Du hattest recht Till! Wenn ich den Cron Job aus ISPCOnfig entferne bleiben diese Ordner ja trotzdem bestehen kann bzw. darf ich diese dann einfach löschen??

Habe da evtl ein Problem entdeckt. Kann es sein das er Cronjbs bzw, php scripte nicht mit cron ausführt wenn diese unter einer anderen version laufen als die vom system verwendete Standard version?
habe jetzt als cron job den typo3 scheduler angelegt mit folgendem Pfad.
scheduler
	
	



```
/opt/php-5.5.27/bin/php -f /var/www/clients/client1/web1/web/typo3/cli_dispatch.phpsh scheduler
```
 und dieser wird nicht ausgeführt. Wenn die website jedoch mit der System Standard php version funktioniert und ich dann den cronjob wie folgt aufrufe 
	
	



```
/usr/bin/php -f /var/www/clients/client1/web1/web/typo3/cli_dispatch.phpsh scheduler
```
 läuft dieses.
Der cron job ist als chrooted cron angelegt und soll eigentlich auch so bleiben.
Kann das Problem jemand bestätigen?


----------



## logifech (31. Juli 2015)

Also Cronjobs werden bei mir garnicht ausgeführt (wenn sie gejailed sind) habe dies anhand des Beitrags geprüft https://www.howtoforge.de/forum/threads/cronjob-ueber-ispconfig-anlegen-funktion-testen.5373/ Was kann man dagegen tun?? möchte Cronjobs für kunden nicht als Full Cron laufen lassen sondern als chrooted cron.


----------



## Till (31. Juli 2015)

Schau mal ins syslog. Ich hab hier auch jailed cronjobs, bislang keine Probleme damit ghabt. Du kannst natürlich nur das an programmen im jail ausführen, was auch im jail drin ist.


----------



## logifech (31. Juli 2015)

Hi Till,
also im Syslog steht nix drinne, das heißt ich muss in die jk_init.ini auch noch die ganzen php sachen rein schreiben die ich selber in /opt/php-5.x.x compiliert habe? Aber was ich nicht vertsehe ist er legt ja selbst diese test.txt datei nicht an d.h ja das cron garnicht erst läuft.

Das einzige das im Syslog steht ist

```
Jul 31 03:07:01 ISP05 /usr/sbin/cron[1795]: (*system*ispc_chrooted_web1) RELOAD (/etc/cron.d/ispc_chrooted_web1)
Jul 31 03:09:01 ISP05 /USR/SBIN/CRON[7824]: (web1) CMD (/opt/php-5.5.27/bin/php /var/www/clients/client1/web1/web/typo3/cli_dispatch.phpsh #adcanco-online.de)
```
Die Datei test.txt legt er leider trotzdem nicht an, ich sehe auch nur den Cron von Typo3 und den anderen nicht.


----------



## robotto7831a (31. Juli 2015)

Laut dem Log wird der Cronjob ausgeführt.

Vermutung: PHP ist nicht im Jail. Lass doch mal die Errorausgabe in eine Datei umleiten.


----------



## logifech (31. Juli 2015)

Ja das dachte ich mir, aber habe auch einen 2 Angelegt der eine datei in "/var/www/clients/clientx/webx/web" anlegen soll per touch dies amcht er leider nicht, aber warum? Die Pfade stimmen alle.


----------



## robotto7831a (31. Juli 2015)

Als Pfad hast Du geschrieben /web oder?


----------



## logifech (31. Juli 2015)

habe bei dem cron job bei auszuführender befehl eingegeben "/bin/touch var/www/clients/clientx/webx/web/test.txt" Der cronjob soll als Jailed cron laufen und die Datei wird nicht angelegt.
Lege ich diesen jedoch al sFull Cron an werden alle sachen korrekt ausgeführt nur nicht als jailed.


----------



## robotto7831a (31. Juli 2015)

Schreib mal /web. Den andern Pfad kennt er im Jailed nicht.


----------



## logifech (31. Juli 2015)

ok probiere es mal kurz


----------



## logifech (31. Juli 2015)

Jetzt führt er Ihn aus so eine Letzte Frage Typo3 läuft bei mir unter einer zusatz PHP-FPM version diese liegt unter /opt/php-5.5.27 muss ich diese version jetzt ebenfalls in die /et/jaillkit/jk_init.ini mit einfügen und das jail neu installieren damit der cronjob dann vernünftig läuft?


----------



## robotto7831a (31. Juli 2015)

Alle Programme müssen im Jail verfügbar sein. Beispiel: Wenn Du unzip nutzen willst, muss unzip im Jail enthalten sein. Also das gleiche mit PHP.

In die jk_init PHP mit aufnehmen und dann mit jk_cp heißt es glaube ich das Programm dem Jailkit hinzufügen.


----------



## logifech (31. Juli 2015)

```
[env]
comment = environment variables
executables = /usr/bin/env

[php]
comment = the php interpreter and libraries
executables = /usr/bin/php5
directories = /usr/lib/php5, /usr/share/php, /usr/share/php5, /etc/php5, /usr/share/php-geshi, [B]/usr/share/zoneinfo[/B]
includesections = env

[php55]
comment = php-5.4.43 interpreter
executables = /opt/php-5.4.43/bin/php5
directories = /opt/php-5.5.43, /usr/share/zoneinfo
includesections = env

[php55]
comment = php-5.5.27 interpreter
executables = /opt/php-5.5.27/bin/php5
directories = /opt/php-5.5.27, /usr/share/zoneinfo
includesections = env

[php55]
comment = php-5.6.11 interpreter
executables = /opt/php-5.6.11/bin/php5
directories = /opt/php-5.6.11, /usr/share/zoneinfo
includesections = env
```
habe das jetzt so eingefügt, denke das kann man so übernehmen oder?

EDIT:
Wenn ich das so übernehmen möchte bekomme ich folgenden error


Spoiler: Error



Traceback (most recent call last):
  File "/usr/sbin/jk_init", line 244, in <module>
    main()
  File "/usr/sbin/jk_init", line 241, in main
    activateConfig(config, jail, args)
  File "/usr/sbin/jk_init", line 161, in activateConfig
    ji.handle_cfg_section(config,jail,cfg,section)
  File "/usr/sbin/jk_init", line 107, in handle_cfg_section
    self.didfiles = jk_lib.copy_binaries_and_libs(chroot, paths2, config['force'], config['verbose'], 1, try_hardlink=config['hardlink'],try_glob_matching=1,handledfiles=self.didfiles)
  File "/usr/share/jailkit/jk_lib.py", line 642, in copy_binaries_and_libs
    create_parent_path(chroot,os.path.dirname(file), be_verbose, copy_permissions=1, allow_suid=allow_suid, copy_ownership=retain_owner)
  File "/usr/share/jailkit/jk_lib.py", line 464, in create_parent_path
    os.mkdir(jailpath, 0755)
OSError: [Errno 13] Permission denied: '/var/www/clients/client1/web1/opt'


Das jail habe ich wie folgt "neu" gebaut 



> jk_init -c /etc/jailkit/jk_init.ini -f -k -j /var/www/clients/client1/web1 php


----------



## logifech (31. Juli 2015)

Fehler gefunden! Ich musste das Immutable bit vorher entfernen. Andere fare wenn ich keien Cronjobs/SSH user merh habe hält er die ganzen verzeichnisse ja bei darf man die manuell entfernen?


----------



## robotto7831a (31. Juli 2015)

Mach doch einfach jk_cp.


----------



## logifech (31. Juli 2015)

Es funktioniert ja jetzt alles zum Glück  Die letzte frage wäre jetzt nur noch wenn ich keien Cronjobs/SSH user merh habe hält er die ganzen verzeichnisse ja bei darf man die manuell entfernen?


----------



## Till (31. Juli 2015)

Ja, die kannst Du entfernen wenn es weder einen jailed cronjob noch ssh user in dem web gibt.


----------



## logifech (31. Juli 2015)

Super danke, ich gehe davon aus das sie wieder angelegt werden sobald diese gebraucht werden? Wie sieht das eiegntlich aus wenn ich php im jail zu verfügung stelle (selbst kompillierte version unter /opt) und ein user sich pecl extensions runterläd und diese einkompilliert mittels phpize oder pecl selber diese sind nicht global verfügbar oder? und an der "Original" phpversion wird nix verändert oder?


----------

