Maison > Article > Opération et maintenance > Comment Docker résout le problème selon lequel crontab ne prend pas effet
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.
L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3.
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
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!