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
| 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. | sudo grep CRON /var/log/syslog
|
gibt mir die Ausgabe:
| 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
Ehemaliger
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
Ehemalige
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
Proton23 schrieb: | 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.
| 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
Ehemaliger
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
Ehemaliger
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
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
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17521
|
namei -l /pfad/zur/php/datei , wäre jetzt relevant.
mfg Stefan
|
sebix
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:
| 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
Ehemaliger
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.
| sudo -u bigdeal /usr/bin/php /var/www/vhosts/big.deal/nextcloud.big.deal/cron.php
|
und
| 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
Ehemaliger
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
|