ubuntuusers.de

cronjob führt php-Skript nicht aus

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

Proton23

Anmeldungsdatum:
11. August 2008

Beiträge: 94

Hallo zusammen!

Ich habe auf meinem Server Nextcloud laufen und möchte gerne das cron.php-Skript über cronjob ausführen.

Gebe ich im Terminal

1
2
sudo -u bigdeal php /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php 
sudo -u bigdeal /usr/bin/php /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php

ein, wird das Skript ausgeführt.

Nextcloud erwartet, dass der cronjob unter dem Benutzer ausgeführt wird, dem auch das Nextcloud-Verzeichnis gehört. Mit 'crontab -e' als auch mit 'crontab -u bigdeal -e' editiere ich den gleichen Eintrag. Mit 'sudo crontab -e' habe ich den gleichen Eintrag auch für den root-crontab gemacht.

1
sudo grep CRON /var/log/syslog

gibt mir die Ausgabe:

1
2
Dec 21 11:46:01 burger27 CRON[3141]: (bigdeal) CMD (/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php)
Dec 21 11:46:01 burger27 CRON[3142]: (root) CMD (/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php)

was für mich eigentlich bedeutet, dass die Befehle ausgeführt wurden. Nur scheint es so, dass die Skripte nicht ausgeführt wurden. Die Pfade sind absolut, deswegen dürfte es an denen nicht liegen.

Weiß jemand weiter?

Schönen Gruß

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Sieht sogar so aus als ob das Script 2x ausgeführt wird, einmal als richtiger User und dann nochmal als root. Bitte verwende nur die Variante mit dem User, ohne sudo.

Korrekt wäre also sudo crontab -e -u username zu verwenden, und dort mit absoluten Pfadangaben zu arbeiten. Beachte auch das manche Scripts erwarten das du diese von einem bestimmtem Verzeichnis aus ausführst, das ist bei dir dann wohl nicht der Fall.

Nachtrag: Generell würde ich bei Ubuntu 16.04 dazu raten die Fähigkeiten von systemd mit Timer Units zu benutzen 😉

mfg Stefan

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Proton23 schrieb:

1
2
Dec 21 11:46:01 burger27 CRON[3141]: (bigdeal) CMD (/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php)
Dec 21 11:46:01 burger27 CRON[3142]: (root) CMD (/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php)

Kann es sein, dass, da das Skript nun auch als root ausgefuehrt wurde, nun nicht mehr richtig arbeiten kann, weil manche Dateien nun root gehoeren?

Proton23

(Themenstarter)

Anmeldungsdatum:
11. August 2008

Beiträge: 94

Danke schon mal für die Antworten! ☺

@sebix Erst gab es nur den Eintrag für den User, aber leider hat es trotzdem nicht funktioniert.

@Stefan Ich wäre generell einer Lösung mit systemd nicht abgeneigt, aber Nextcloud bittet das in den Einstellungen nicht an.

Ich habe auch noch andere Einträge versucht(sowohl mal mit einfachen als auch mal mit doppelten Anführungszeichen), aber allesamt erfolglos.

1
2
3
4
5
6
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/15 * * * * php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php #DOES NOT WORK
*/15 * * * * /usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php #DOES NOT WORK
*/15 * * * * /bin/bash -c “php /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php” #DOES NOT WORK
*/15 * * * * bigdeal /bin/su -s /bin/sh -c “/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php” #DOES NOT WORK

Bin für Vorschläge offen. 😐

Schönen Gruß Antonio

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Nextcloud möchte das du ein Script ausführst, Nextcloud ist es egal was dieses Script ausführt.

Auf der Konsole läuft das Script nach wie vor?

mfg Stefan

Proton23

(Themenstarter)

Anmeldungsdatum:
11. August 2008

Beiträge: 94

Hallo Stefan,

ja, das Skript lässt sich noch einwandfrei in der Konsole ausführen. Kannst du mir einen Link für systemd Timer units empfehlen?

Schönen Gruß

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Der Timer ist Schritt zwei, zuerst brauchst du ein Service Unit. Das Service Unit wird dann vom Timer Unit nach deinen Wünschen regelmäßig ausgeführt.

Hier ein Beispiel vom Service Unit, welches unter /etc/systemd/system/nextcloud.service liegen würde:

[Unit]
Description=Nextcloud Cron Task

[Service]
Type=oneshot
User=DEINUSERVONNEXTCLOUD
ExecStart=/usr/bin/php -f /pfad/was/er/machen/soll.php

[Install]
WantedBy=multi-user.target

Wenn man das entsprechend ablegt, und sudo systemctl deamon-reload ausführt, kann man es mit sudo systemctl start nextcloud-cron.service einmalig starten, geht das, dann macht man sich Gedanken um das Timer Unit.

mfg Stefan

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6496

Proton23 schrieb:

Hallo Stefan,

ja, das Skript lässt sich noch einwandfrei in der Konsole ausführen. Kannst du mir einen Link für systemd Timer units empfehlen?

Schönen Gruß

systemd/Timer Units

Proton23

(Themenstarter)

Anmeldungsdatum:
11. August 2008

Beiträge: 94

Also die Ausgabe von systemctl status nextcloud.service sieht wie folgt aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
nextcloud.service - Nextcloud Cron
   Loaded: loaded (/etc/systemd/system/nextcloud.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sa 2017-12-23 17:17:30 CET; 18s ago
  Process: 6555 ExecStart=/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php (code=exited, status=1/FAILURE)
 Main PID: 6555 (code=exited, status=1/FAILURE)

Dez 23 17:17:30 burger27 systemd[1]: Starting Nextcloud Cron...
Dez 23 17:17:30 burger27 php[6555]: Could not open input file: /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Main process exited, code=exited, status=1/FAILURE
Dez 23 17:17:30 burger27 systemd[1]: Failed to start Nextcloud Cron.
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Unit entered failed state.
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Failed with result 'exit-code'.

Dabei ist natürlic das "Could not open input file: /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php" sehr verdächtig.

Die Berechtigungen sind:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@burger27:/etc/systemd/system# ls -la /var/www/vhosts/big.deal/nextcloud.big.deal/
total 176
drwxr-x--- 16 bigdeal psaserv  4096 Dez 19 16:24 .
drwx--x--- 15 bigdeal psaserv  4096 Dez 23 17:05 ..
drwxr-xr-x 33 bigdeal psacln   4096 Dez  6 20:22 3rdparty
drwxr-xr-x 39 bigdeal psacln   4096 Dez 16 19:49 apps
drwxr-xr-x  3 bigdeal psacln   4096 Dez 19 16:25 apps2
-rw-r--r--  1 bigdeal psacln   8868 Dez  6 20:21 AUTHORS
drwxr-xr-x  2 bigdeal psacln   4096 Dez 19 16:33 config
-rw-r--r--  1 bigdeal psacln   4050 Dez  6 20:21 console.php
drwxr-xr-x 16 bigdeal psacln   4096 Dez  6 20:22 core
-rw-r--r--  1 bigdeal psacln   5057 Dez  6 20:22 cron.php
drwxr-xr-x  2 bigdeal psacln   4096 Dez  3 23:38 data
-rw-r--r--  1 bigdeal psacln  41077 Dez  6 20:21 db_structure.xml
-rw-r--r--  1 bigdeal psacln   2833 Dez  6 20:24 .htaccess
-rw-r--r--  1 bigdeal psacln    179 Dez  6 20:22 index.html
-rw-r--r--  1 bigdeal psacln   2804 Dez  6 20:21 index.php
drwxr-xr-x  3 bigdeal psacln   4096 Dez  6 20:22 l10n
drwxr-xr-x  6 bigdeal psacln   4096 Dez  6 20:22 lib
-rw-r--r--  1 bigdeal psacln    283 Dez  6 20:21 occ
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:22 ocs
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:22 ocs-provider
-rw-r--r--  1 bigdeal psacln   3152 Dez  6 20:22 public.php
-rw-r--r--  1 bigdeal psacln   5323 Dez  6 20:21 remote.php
drwxr-xr-x  4 bigdeal psacln   4096 Dez  6 20:22 resources
-rw-r--r--  1 bigdeal psacln     26 Dez  6 20:21 robots.txt
drwxr-xr-x 14 bigdeal psacln   4096 Dez  6 20:22 settings
-rw-r--r--  1 bigdeal psacln   2110 Dez  6 20:21 status.php
drwxr-xr-x  3 bigdeal psacln   4096 Dez  6 20:22 themes
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:23 updater
-rw-r--r--  1 bigdeal psacln    163 Dez  6 20:21 .user.ini
-rw-r--r--  1 bigdeal psacln    481 Dez  6 20:21 version.php

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

namei -l /pfad/zur/php/datei, wäre jetzt relevant.

mfg Stefan

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Proton23 schrieb:

nextcloud.service - Nextcloud Cron
   Loaded: loaded (/etc/systemd/system/nextcloud.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sa 2017-12-23 17:17:30 CET; 18s ago
  Process: 6555 ExecStart=/usr/bin/php -f /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php (code=exited, status=1/FAILURE)
 Main PID: 6555 (code=exited, status=1/FAILURE)

Dez 23 17:17:30 burger27 systemd[1]: Starting Nextcloud Cron...
Dez 23 17:17:30 burger27 php[6555]: Could not open input file: /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Main process exited, code=exited, status=1/FAILURE
Dez 23 17:17:30 burger27 systemd[1]: Failed to start Nextcloud Cron.
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Unit entered failed state.
Dez 23 17:17:30 burger27 systemd[1]: nextcloud.service: Failed with result 'exit-code'.

Dabei ist natürlic das "Could not open input file: /var/www/vhosts/bigdeal/nextcloud.big.deal/cron.php" sehr verdächtig.

Die Berechtigungen sind:

root@burger27:/etc/systemd/system# ls -la /var/www/vhosts/big.deal/nextcloud.big.deal/
total 176
drwxr-x--- 16 bigdeal psaserv  4096 Dez 19 16:24 .
drwx--x--- 15 bigdeal psaserv  4096 Dez 23 17:05 ..
drwxr-xr-x 33 bigdeal psacln   4096 Dez  6 20:22 3rdparty
drwxr-xr-x 39 bigdeal psacln   4096 Dez 16 19:49 apps
drwxr-xr-x  3 bigdeal psacln   4096 Dez 19 16:25 apps2
-rw-r--r--  1 bigdeal psacln   8868 Dez  6 20:21 AUTHORS
drwxr-xr-x  2 bigdeal psacln   4096 Dez 19 16:33 config
-rw-r--r--  1 bigdeal psacln   4050 Dez  6 20:21 console.php
drwxr-xr-x 16 bigdeal psacln   4096 Dez  6 20:22 core
-rw-r--r--  1 bigdeal psacln   5057 Dez  6 20:22 cron.php
drwxr-xr-x  2 bigdeal psacln   4096 Dez  3 23:38 data
-rw-r--r--  1 bigdeal psacln  41077 Dez  6 20:21 db_structure.xml
-rw-r--r--  1 bigdeal psacln   2833 Dez  6 20:24 .htaccess
-rw-r--r--  1 bigdeal psacln    179 Dez  6 20:22 index.html
-rw-r--r--  1 bigdeal psacln   2804 Dez  6 20:21 index.php
drwxr-xr-x  3 bigdeal psacln   4096 Dez  6 20:22 l10n
drwxr-xr-x  6 bigdeal psacln   4096 Dez  6 20:22 lib
-rw-r--r--  1 bigdeal psacln    283 Dez  6 20:21 occ
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:22 ocs
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:22 ocs-provider
-rw-r--r--  1 bigdeal psacln   3152 Dez  6 20:22 public.php
-rw-r--r--  1 bigdeal psacln   5323 Dez  6 20:21 remote.php
drwxr-xr-x  4 bigdeal psacln   4096 Dez  6 20:22 resources
-rw-r--r--  1 bigdeal psacln     26 Dez  6 20:21 robots.txt
drwxr-xr-x 14 bigdeal psacln   4096 Dez  6 20:22 settings
-rw-r--r--  1 bigdeal psacln   2110 Dez  6 20:21 status.php
drwxr-xr-x  3 bigdeal psacln   4096 Dez  6 20:22 themes
drwxr-xr-x  2 bigdeal psacln   4096 Dez  6 20:23 updater
-rw-r--r--  1 bigdeal psacln    163 Dez  6 20:21 .user.ini
-rw-r--r--  1 bigdeal psacln    481 Dez  6 20:21 version.php

Hervorhebungen von mir.

Proton23

(Themenstarter)

Anmeldungsdatum:
11. August 2008

Beiträge: 94

@sebix Da habe ich einen kleinen Fehler bei der Ersetzung gemacht. Ich ersetze meine Domain fälschlicherweise mal mit bigdeal und mal mit big.deal, aber im ursprung sind die Pfade korrekt.

@Stefan

Die Ausgabe sieht wie folgend aus:

1
2
3
4
5
6
7
8
f: /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php
drwxr-xr-x root   root    /
drwxr-xr-x root   root    var
drwxr-xr-x root   root    www
drwxr-xr-x root   root    vhosts
drwx--x--- bigdeal psaserv big.deal
drwxr-x--- bigdeal psaserv nextcloud.big.deal
-rw-r--r-- bigdeal psacln  cron.php

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Wenn der User in diesem Fall bigdeal ist, dann muss das ausführen klappen, zumindest die Berechtigungen sind hier OK.

mfg Stefan

Proton23

(Themenstarter)

Anmeldungsdatum:
11. August 2008

Beiträge: 94

In der Konsole ist das ja auch so.

1
sudo -u bigdeal /usr/bin/php /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php

und

1
php /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php

funktionieren. Nur die Ausführung durch cron bzw. systemd scheint fehlzuschlagen.

In welchem Log landen die Meldungen, die von cronjob bzw systemd ausgeführte Skripte verursachen?

Schönen Gruß

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Proton23 schrieb:

In welchem Log landen die Meldungen, die von cronjob bzw systemd ausgeführte Skripte verursachen?

Im System Journal, das kannst du dir z.B. mit dem Befehl sudo journalctl -r durchblättern, die neueste Zeile ist dann oben.

mfg Stefan

Antworten |