
Ich habe Probleme, den folgenden CRON-Job ordnungsgemäß einzurichten, um Backups auf der Website meines Kunden zu automatisieren.
Die Site basiert auf Joomla und ich verwende Akeeba Backup für die Backups. Die Empfehlungen für die CRON-Jobs in der Befehlszeile lauten wie folgt:
Verwenden Sie den folgenden Befehl in der CRON-Schnittstelle Ihres Hosts: /Pfad/zu/php /var/www/domain.com/cli/akeeba-backup.php
Denken Sie daran, /path/to/php durch den tatsächlichen Pfad zur ausführbaren PHP-CLI-Datei (Command Line Interface) Ihres Hosts zu ersetzen. Denken Sie daran, dass Sie die ausführbare PHP-CLI-Datei verwenden müssen; die ausführbare PHP-CGI-Datei (Common Gateway Interface) funktioniert nicht mit unseren CRON-Skripten. Wenn Sie sich nicht sicher sind, was dies bedeutet, wenden Sie sich bitte an Ihren Host. Nur dieser kann Ihnen diese Informationen geben.
domain.com als Beispiel
Ich habe CRON installiert und es läuft auf Ubuntu 20.04.
Der folgende Code ist incrontab -e
0 3 * * * /usr/bin/php7.4 /var/www/domain.com/cli/akeeba-backup.php --profile=1 --description="Full automated backup"
Auf der Site wird PHP 7.4 mit installiertem FPM ausgeführt.
Beim Ausführen which php
wird Folgendes zurückgegeben:/usr/bin/php
Beim Ausführen ls -l /usr/bin/php
wird Folgendes zurückgegeben:lrwxrwxrwx 1 root root 21 Aug 31 18:09 /usr/bin/php -> /etc/alternatives/php
Beim Ausführen ls -l /etc/alternatives/php
wird Folgendes zurückgegeben:lrwxrwxrwx 1 root root 15 Aug 31 18:53 /etc/alternatives/php -> /usr/bin/php8.0
Da hier Version 8.0 statt 7.4 angezeigt wird, die von der Site verwendet wird, bedeutet dies, dass der CRON-Job stattdessen Version 8 verwenden sollte.
Beispiel-Logausgabe von/var/log/syslog
Oct 1 11:39:01 domain CRON[38538]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Jede Hilfe wird sehr geschätzt.
Antwort1
Jobs, die über ausgeführt werden, cron
werden nicht in derselben Laufzeitumgebung ausgeführt, die Sie auf Ihrem Desktop haben. Keine Ihrer PATH
Änderungen oder anderen Umgebungsvariableneinstellungen von ~/.bashrc
werden automatisch an Ihren cron
Job weitergegeben. Beispielsweise gibt es kein $DISPLAY
, daher benötigen GUI-Programme eine spezielle Behandlung (lesen Sie man xhost
).
Man kann Umgebungsvariablen für alle seine cron
Jobs in der crontab
Datei Read setzen man 5 crontab
.
Sehen Sie sich die Ergebnisse echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
in jeder Ihrer Umgebungen an.
Mit „jeder“ meine ich cron
einen Desktop. batch
Wenn Sie neugierig sind, können Sie ein „Nicht-GUI-Terminal“ für später aufheben.