Cron und Shell-Zugang
Diese Seite ist für Support-Mitarbeitende und Administratoren bei Hosting-Anbietern, die Kunden helfen, die Jobs von Exponential über die Cron-Seite eines Panels zu planen, und die entscheiden, wie viel Shell-Zugang ein Tarif enthält. Sie beantwortet, welche Jobs laufen müssen und wie oft, welche PHP-Binärdatei eine Cron-Zeile nutzen muss, was die eigene Seite Cronjobs der Administration braucht und was ein Kunde ohne Shell tun kann.

Inhalt
- Warum Exponential Cron braucht
- Die Cron-Zeilen
- Die richtige PHP-Binärdatei
- Der richtige Benutzer
- Die Seite Cronjobs in der Administration
- Mit und ohne Shell-Zugang
- Fehlersuche
- Checkliste
Warum Exponential Cron braucht
Cronjobs erledigen die Arbeit, auf die kein Besucher wartet: Sie veröffentlichen und verbergen Inhalte nach Zeitplan, versenden Benachrichtigungen, setzen Inhaltsjobs fort, führen die Wartung des Prüfprotokolls aus, importieren Feeds, indizieren Inhalte und räumen auf. Ohne sie funktioniert eine Website, aber geplante Inhalte erscheinen nie, Benachrichtigungen gehen nie hinaus, und Caches und Entwürfe häufen sich auf der Festplatte (10.3 Cronjobs).
runcronjobs.php führt Teile aus, benannte Listen von Skripten in settings/cronjob.ini; ohne Namen eines Teils führt es den
globalen Teil aus. php runcronjobs.php --list zeigt jeden Teil und seine Skripte.
Die Cron-Zeilen
Die Crontab, die Kapitel 10 für eine Website nennt, einzurichten in der Crontab des Benutzers der Website:
# m h dom mon dow command
*/5 * * * * cd /path/to/installation && php runcronjobs.php -q -s site frequent >> var/log/cron-frequent.log 2>&1
*/15 * * * * cd /path/to/installation && php runcronjobs.php -q -s site >> var/log/cron-default.log 2>&1
17 * * * * cd /path/to/installation && php runcronjobs.php -q -s site infrequent >> var/log/cron-infrequent.log 2>&1
40 3 * * * cd /path/to/installation && php runcronjobs.php -q -s site cache_cleanup >> var/log/cron-cleanup.log 2>&1
50 3 * * * cd /path/to/installation && php runcronjobs.php -q -s site --script=session_gc.php >> var/log/cron-cleanup.log 2>&1-swählt den Siteaccess, dessen Einstellungen die Skripte lesen; nutzen Sie den öffentlichen Siteaccess, es sei denn, ein Teil sagt etwas anderes.-qunterdrückt die Ausgabe außer Fehlern.frequentalle paar Minuten ist, was Benachrichtigungen und Inhaltsjobs erwarten;infrequentstündlich oder täglich.- Rotieren Sie die Dateien
cron-*.logmit logrotate des Systems.
Wenn die Cron-Seite eines Panels ein Feld pro Zeile hat, geben Sie Zeitplan und Befehl jeder Zeile getrennt ein; der Befehl ist alles nach den fünf Zeitfeldern.
Hinweis Die Seite Cronjobs erkennt eine Zeile dieser Installation nur, wenn sie
runcronjobs.phpund den echten Wurzelpfad der Installation enthält; ein Pfad über einen symbolischen Link zeigt den Teil als Nicht geplant. Verwenden Sie in der Zeilecd <real root> &&(Cronjobs, Fehlersuche).
Die richtige PHP-Binärdatei
Verwenden Sie dieselbe PHP-Binärdatei, die der Webserver nutzt (/opt/.../php auf Hosts mit mehreren PHP-Versionen); php -v in
der Cron-Umgebung kann sich von dem Ihrer Shell unterscheiden. Auf Plesk ist das zum Beispiel /opt/plesk/php/8.5/bin/php:
*/5 * * * * cd /var/www/vhosts/<domain>/<docroot> && /opt/plesk/php/8.5/bin/php runcronjobs.php -q -s site frequent >/dev/null 2>&1Wenn das Panel die PHP-Version der Website ändert, aktualisieren Sie auch die Cron-Zeilen (PHP-Auswahl und FPM-Pools).
Der richtige Benutzer
Richten Sie die Zeilen in der Crontab des Benutzers der Website ein (der, als der der Webserver läuft, damit die Dateien, die die
Jobs schreiben, ihm gehören): crontab -e -u <site user> oder php bin/php/console crontab:edit als dieser Benutzer
(Cronjobs, Planen). Die Cron-Seite eines Panels pro Konto führt Jobs
meist als Benutzer des Kontos aus, was Exponential braucht; lesen Sie in der Dokumentation Ihres Panels nach.
Warnung Cron-Zeilen in der Crontab von root schreiben Cache- und Logdateien als root, die der Benutzer der Website danach nicht ersetzen kann, und die Website versagt an seltsamen Stellen (8.7.2). Als root braucht jedes Skript
--allow-root-user; besser, Sie führen sie nicht als root aus.
Die Seite Cronjobs in der Administration
Setup > Cronjobs führt jeden Teil oder jedes Skript aus, folgt seiner Ausgabe, zählt Probleme, hält Teile an und schlägt Crontab-Zeilen für die noch nicht geplanten Teile vor (Anleitung zu Cronjobs). Was sie vom Server braucht:
| Bedarf | Warum | Wenn es fehlt |
|---|---|---|
Eine PHP-Binärdatei für die Kommandozeile: cronjob.ini [AdminSettings] PhpCliPath, sonst PHP_BINDIR/php, /usr/bin/php, /usr/local/bin/php | Jobs sind getrennte Prozesse; sie nutzt nie die Binärdatei, die die Web-Anfrage beantwortet | rote Meldung, jedes Starten deaktiviert |
proc_open | um einen Job zu starten | die Seite sagt es |
exec | um die Crontab zu lesen (crontab -l) | die Seite sagt es |
posix_kill | Laufenden Job anhalten | die Seite sagt es |
Richtlinie setup/managecronjobs | Zugang | Zugriff verweigert |
Setzen Sie PhpCliPath auf Servern mit mehreren PHP-Versionen:
php bin/php/console exp:ini set cronjob.ini/AdminSettings/PhpCliPath /opt/plesk/php/8.5/bin/php global
php bin/php/ezcache.php --clear-tag=ini --allow-root-userDie Seite liest nur die Crontab des Benutzers, als der der Webserver läuft. Für Kunden ohne Shell sind ihre Vorgeschlagenen Einträge die Zeilen, die in die Cron-Seite des Panels eingefügt werden.
Teile können aus der Seite angehalten werden, ohne die Crontab anzurühren; einen angehaltenen Teil lässt runcronjobs.php aus, wer
ihn auch startet (Cronjob-Teile anhalten). Das ist während einer Migration oder einer
Wiederherstellung nützlich.
Mit und ohne Shell-Zugang
| Aufgabe | Mit Shell | Ohne Shell |
|---|---|---|
Den Code und vendor/ holen | git clone, composer install | einen anderswo vorbereiteten Baum hochladen, oder ein Installer des Hosters |
| Installieren | exp:install, der Kickstarter oder der Assistent | der Setup-Assistent (er braucht nur einen Browser und FTP-Zugang) |
| Updates | Composer oder ezupdate | ezupdate in der Administration, wenn Composer erreichbar ist und Updates erlaubt sind |
| Caches leeren | php bin/php/ezcache.php --clear-all | Setup > Caches (/setup/cache) in der Administration |
| Einen Cron-Teil einmal ausführen | php runcronjobs.php -s site frequent oder php bin/php/console cron:frequent | Setup > Cronjobs, wenn proc_open erlaubt ist |
| Wartungsmodus | php bin/php/maintenance.php on | Setup > Wartung |
| Logs lesen | tail var/log/error.log | Setup > Logdateien |
| Velocity | möglich, wenn lang laufende Prozesse erlaubt sind | nicht möglich |
Quellen: Kapitel 4, Wartungsmodus, Log-Viewer, ezupdate.
Shell-Zugang als eigener Benutzer der Website (nicht als root) ist die sicherste Form, die Sie anbieten können: Alles, was der Kunde ausführt, schreibt dann Dateien, die die Website weiterhin ändern kann.
Fehlersuche
| Symptom | Ursache | Abhilfe |
|---|---|---|
| Geplante Inhalte erscheinen nie | keine Cron-Zeile, oder die Zeile nutzt ein PHP ohne die Erweiterungen der Website | fügen Sie die Zeilen hinzu; nutzen Sie die PHP-Binärdatei der Website |
| Von Cron geschriebene Dateien kann die Website nicht ändern | Cron läuft als anderer Benutzer | verlegen Sie die Zeilen in die Crontab des Benutzers der Website |
| Cronjob part locked by other process | dasselbe Skript läuft bereits | erwartet: die Sperre funktioniert |
| Ein neuer Teil erscheint nicht auf der Seite | INI-Cache | php bin/php/ezcache.php --clear-tag=ini --allow-root-user |
Mehr in Cronjobs, Fehlersuche und Cronjobs für Hoster.
Checkliste
- To do:
frequent, der globale Teil undinfrequentgeplant; Bereinigungsteile nächtlich. - To do: Die Zeilen nutzen die PHP-Binärdatei der Website und den echten Pfad der Installation.
- To do: Die Zeilen stehen in der Crontab des Benutzers der Website, nicht in der von root.
- To do:
PhpCliPathauf Servern mit mehreren PHP-Versionen gesetzt. - To do: Die Entscheidung zu
proc_open,exec,posix_killfür die Seite Cronjobs ist dokumentiert. - To do: Die Richtlinie zum Shell-Zugang pro Tarif ist aufgeschrieben.
Cron auf einer öffentlichen Demo. Die Cronjobs der Demo brauchen dasselbe EXP_DEMO_MODE=1 wie ihre Web-Anfragen: eine Zeile oben in der Crontab (oder in der Cron-Umgebung des Panels), wie in crontab-demo. Demomodus für Hoster.
Verwandte Seiten
- Control Panels: Überblick
- Cronjobs, Cronjob-Konsole
- Anleitung zu Cronjobs
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.