Heim > Artikel > Betrieb und Instandhaltung > Wie Docker das Problem löst, dass Crontab nicht wirksam wird
Lösung: 1. Überprüfen Sie, ob sich der Status „/etc/init.d/crond“ im Container im Ausführungsstatus befindet. 2. Ändern Sie die Datei „/etc/pam.d/crond“ und ändern Sie „erforderlich“ in „ausreichend“. "; 3. Verwenden Sie „/etc/init.d/crond restart“, um den Crond-Dienst neu zu starten.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.
1. Überprüfen Sie zunächst, ob sich der Status /etc/init.d/crond im Container im laufenden Zustand befindet.
Wenn das Problem im ersten Schritt nicht gelöst werden kann, verwenden Sie bitte die folgende Methode:
2 Ändern Sie die Datei /etc/pam.d/crond, ändern Sie „required“ in „stained“ und starten Sie dann den crond-Dienst neu: /etc /init.d /crond restart
Hinweis: Dieses Problem scheint im Centos7-Basisimage nicht zu bestehen.
Wissen erweiternFrüheste Lösung
1. Auf dem Host-Rechner
1 3 * * * root cd /data/wwwroot/xxx && docker-compose exec app php think xxx >> /var/log/crontab_xxx.log
Docker-Compose Exec App PHP denke, dass xxx bei der Ausführung fehlgeschlagen ist
2. Dann crontab im Container installieren, aber es funktioniert immer noch kann nicht ausgeführt werden. Erfolgreich, der Schlüssel ist, dass keine relevanten Protokolle vorhanden sind. Überprüfen Sie, ob crontab ebenfalls gestartet ist. /etc/init.d/cron Status
3. Rsyslog installieren, apt-get install rsyslog, Service rsyslog starten
/var/log/syslog anzeigen
Dec 25 09:07:07 1a8e4fd5c766 crontab[15120]: (root) BEGIN EDIT (root) Dec 25 09:07:34 1a8e4fd5c766 crontab[15120]: (root) REPLACE (root) Dec 25 09:07:34 1a8e4fd5c766 crontab[15120]: (root) END EDIT (root) Dec 25 09:08:01 1a8e4fd5c766 cron[15100]: (root) RELOAD (crontabs/root) Dec 25 09:08:01 1a8e4fd5c766 CRON[15133]: Cannot make/remove an entry for the sp
4. /etc/pam.d/cron ändern
Sitzung auskommentieren erforderlich pam_loginuid.so
5. Starten Sie cron neu und führen Sie ihn erfolgreich aus
Fügen Sie diese Zeile außerdem zur Docker-Datei hinzu
RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/crond
Bei der Crontab-Ausführung ist auch eine Grube aufgetreten. Es gibt kein Problem bei der manuellen Ausführung des Skripts, da das Lesen von Wenn Sie Nachdem Sie Umgebungsvariablen festgelegt haben, muss PHP absolute Pfade schreiben
/usr/local/bin/php think xxx
Empfohlenes Lernen: „
Docker-Video-TutorialDas obige ist der detaillierte Inhalt vonWie Docker das Problem löst, dass Crontab nicht wirksam wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!