Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Docker das Problem löst, dass Crontab nicht wirksam wird

Wie Docker das Problem löst, dass Crontab nicht wirksam wird

WBOY
WBOYOriginal
2022-08-16 18:18:367807Durchsuche

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.

Wie Docker das Problem löst, dass Crontab nicht wirksam wird

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.

So lösen Sie das Problem, dass Crontab in Docker nicht wirksam wird. Das Centos-Image wird standardmäßig in Docker verwendet. Nach erfolgreicher Installation über yum wird Crontab nicht wirksam.

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

Wie Docker das Problem löst, dass Crontab nicht wirksam wirdHinweis: 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-Tutorial

Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn