해결책: 1. 컨테이너의 "/etc/init.d/crond status"가 실행 상태인지 확인하세요. 2. "/etc/pam.d/crond" 파일을 수정하고 "required"를 "충분함"으로 변경하세요. 3. "/etc/init.d/crond restart"를 사용하여 crond 서비스를 다시 시작합니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.
docker에서는 기본적으로 centos 이미지가 사용됩니다. yum을 통해 성공적으로 설치한 후에는 crontab이 적용되지 않습니다.
1. 먼저 컨테이너의 /etc/init.d/crond 상태가 실행 중인 상태인지 확인하세요.
첫 번째 단계를 통해 문제가 해결되지 않으면 다음 방법을 참조하세요.
2. /etc/pam.d/crond 파일을 수정하고, 필수로 변경한 후 crond 서비스를 다시 시작합니다: /etc /init.d /crond restart
참고: 이 문제는 centos7 기본 이미지에는 없는 것 같습니다.
지식 확장
가장 빠른 솔루션
1. 호스트 머신에서
1 3 * * * root cd /data/wwwroot/xxx && docker-compose exec app php think xxx >> /var/log/crontab_xxx.log
docker-compose exec app php에서 xxx가 성공적으로 실행되지 않았다고 생각합니다
2. 그런 다음 컨테이너에 crontab을 설치했지만 여전히 실행할 수 없습니다. 성공, 관건은 관련 로그가 없다는 점입니다. crontab도 시작되었는지 확인하세요. /etc/init.d/cron status
3. rsyslog 설치, apt-get install rsyslog, service rsyslog start
/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. /etc/pam.d/cron
수정코멘트아웃 세션 필수 pam_loginuid.so
5. cron을 다시 시작하고 성공적으로 실행
또한 dockerfile에 다음 줄을 추가하세요
RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/crond
Crontab 실행에서도 피트가 발생했는데, 스크립트를 수동으로 실행해도 문제가 없습니다. 환경 변수를 설정했습니다. PHP는 절대 경로를 작성해야 합니다
/usr/local/bin/php think xxx
권장 학습: "docker 비디오 튜토리얼"
위 내용은 crontab이 적용되지 않는 문제를 docker가 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!