Maison  >  Article  >  Opération et maintenance  >  Comment Docker résout le problème selon lequel crontab ne prend pas effet

Comment Docker résout le problème selon lequel crontab ne prend pas effet

WBOY
WBOYoriginal
2022-08-16 18:18:367809parcourir

Solution : 1. Vérifiez si « /etc/init.d/crond status » dans le conteneur est en cours d'exécution ; 2. Modifiez le fichier « /etc/pam.d/crond » et remplacez « requis » par « suffisant » "; 3. Utilisez "/etc/init.d/crond restart" pour redémarrer le service crond.

Comment Docker résout le problème selon lequel crontab ne prend pas effet

L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3.

Comment résoudre le problème de crontab qui ne prend pas effet dans docker

L'image centos est utilisée par défaut dans docker. Crond n'est pas installé dans cette image. Après une installation réussie via yum, crontab ne prend pas effet.

1. Vérifiez d'abord si l'état /etc/init.d/crond dans le conteneur est en cours d'exécution.

Si le problème ne peut pas être résolu via la première étape, veuillez vous référer à la méthode suivante :

2. Modifiez le fichier /etc/pam.d/crond, modifiez requis à suffisant, puis redémarrez le service crond : /etc. /init.d /crond restart

Comment Docker résout le problème selon lequel crontab ne prend pas effet

Remarque : ce problème ne semble pas exister dans l'image de base de centos7.

Développer les connaissances

Première solution

1. Dans la machine hôte

       1 3  * * * root  cd /data/wwwroot/xxx && docker-compose exec app php think xxx >> /var/log/crontab_xxx.log

docker-compose exec app php pense que l'exécution de xxx a échoué

2. Ensuite, installez crontab dans le conteneur, mais il continue ne peut pas être exécuté avec succès, la clé est qu'il n'y a pas de journaux pertinents. Vérifiez que crontab est également démarré. /etc/init.d/cron status

3. Installez rsyslog, apt-get install rsyslog, service rsyslog start

Afficher /var/log/syslog

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. Modifier /etc/pam.d/cron

La session de commentaire est requise pam_loginuid.so

5. Redémarrez cron et exécutez-le avec succès

Ajoutez également cette ligne au fichier docker

RUN sed -i '/session    required   pam_loginuid.so/c\#session    required   pam_loginuid.so' /etc/pam.d/crond

L'exécution de Crontab a également rencontré un problème, il n'y a aucun problème à exécuter manuellement le script, car la lecture Si vous avez défini des variables d'environnement, PHP doit écrire des chemins absolus

 /usr/local/bin/php think xxx

Apprentissage recommandé : "Tutoriel vidéo Docker"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn