簡體   English   中英

Cron Job 未在 alpine 中與主管一起運行

[英]Cron Job is not running with supervisor in alpine

我的 docker 容器有問題,在本地運行良好,但在生產中它不起作用。

我的應用程序的唯一問題是未運行的 cron 作業。 我正在使用安裝了 Supervisor 的 Alpine 映像,我成功地使 php-fpm 工作但不是 cron,而且我使用的是每 15 分鍾運行一次的默認 alpine cron 配置。 在日志中,我看到它已被執行,但沒有任何結果:

    /srv/app # cat /var/log/cron.log
    crond: crond (busybox 1.35.0) started, log level 8
    crond: USER root pid 757 cmd run-parts /etc/periodic/15min
    crond: USER root pid 1319 cmd run-parts /etc/periodic/15min

有provisor文件ini:

    ; /etc/supervisor.d/supervisor.ini
    [supervisord]
    nodaemon=true
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    
    [program:cron]
    command=/usr/sbin/crond -f -l 8 -L /var/log/cron.log
    user=root
    autorestart=true
    
    [program:php-fpm]
    command=docker-php-entrypoint php-fpm
    user = root
    autostart = true
    autorestart = true
    stdout_logfile = /dev/stdout
    stdout_logfile_maxbytes=0
    stderr_logfile = /dev/stderr
    stderr_logfile_maxbytes=0

和 cron 動作:

    # /etc/periodic/15min

    #!/bin/sh
    echo "Fetch Post started : $(date)"
    php /srv/app/bin/console app:fetch
    echo "Fetch Post finished: $(date)"

但是當我執行

    php /srv/app/bin/console app:fetch

手動在 docker 容器內,它工作得很好

更新 1:

我檢查了 cron 日志,有 output:

/srv/app # cat /var/log/cron.log
crond: crond (busybox 1.35.0) started, log level 8
crond: USER root pid 757 cmd run-parts /etc/periodic/15min
crond: USER root pid 1319 cmd run-parts /etc/periodic/15min
crond: USER root pid 1863 cmd run-parts /etc/periodic/15min
crond: USER root pid 2402 cmd run-parts /etc/periodic/15min
crond: USER root pid 2403 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 2957 cmd run-parts /etc/periodic/15min
crond: USER root pid 3495 cmd run-parts /etc/periodic/15min
crond: USER root pid 4038 cmd run-parts /etc/periodic/15min
crond: USER root pid 4577 cmd run-parts /etc/periodic/15min
crond: USER root pid 4578 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 5130 cmd run-parts /etc/periodic/15min
crond: USER root pid 5669 cmd run-parts /etc/periodic/15min
crond: USER root pid 6207 cmd run-parts /etc/periodic/15min
crond: USER root pid 6743 cmd run-parts /etc/periodic/15min
crond: USER root pid 6744 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 7294 cmd run-parts /etc/periodic/15min
crond: USER root pid 7837 cmd run-parts /etc/periodic/15min
crond: USER root pid 8374 cmd run-parts /etc/periodic/15min
crond: USER root pid 8914 cmd run-parts /etc/periodic/15min
crond: USER root pid 8915 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 9464 cmd run-parts /etc/periodic/15min
crond: USER root pid 10001 cmd run-parts /etc/periodic/15min
crond: USER root pid 10539 cmd run-parts /etc/periodic/15min
crond: USER root pid 11074 cmd run-parts /etc/periodic/15min
crond: USER root pid 11075 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 11076 cmd run-parts /etc/periodic/daily
run-parts: /etc/periodic/daily: No such file or directory
crond: USER root pid 11638 cmd run-parts /etc/periodic/15min
crond: USER root pid 12175 cmd run-parts /etc/periodic/15min
crond: USER root pid 12712 cmd run-parts /etc/periodic/15min
crond: USER root pid 13250 cmd run-parts /etc/periodic/15min
crond: USER root pid 13251 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 13802 cmd run-parts /etc/periodic/15min
crond: USER root pid 14339 cmd run-parts /etc/periodic/15min
crond: USER root pid 14882 cmd run-parts /etc/periodic/15min
crond: USER root pid 15420 cmd run-parts /etc/periodic/15min
crond: USER root pid 15421 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 15973 cmd run-parts /etc/periodic/15min
crond: USER root pid 16514 cmd run-parts /etc/periodic/15min
crond: USER root pid 17052 cmd run-parts /etc/periodic/15min
crond: USER root pid 17587 cmd run-parts /etc/periodic/15min
crond: USER root pid 17588 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 18138 cmd run-parts /etc/periodic/15min
crond: USER root pid 18682 cmd run-parts /etc/periodic/15min
crond: USER root pid 19220 cmd run-parts /etc/periodic/15min
crond: USER root pid 19757 cmd run-parts /etc/periodic/15min
crond: USER root pid 19758 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 20313 cmd run-parts /etc/periodic/15min
crond: USER root pid 20850 cmd run-parts /etc/periodic/15min
crond: USER root pid 21388 cmd run-parts /etc/periodic/15min
crond: USER root pid 21928 cmd run-parts /etc/periodic/15min
crond: USER root pid 21929 cmd run-parts /etc/periodic/hourly
run-parts: /etc/periodic/hourly: No such file or directory
crond: USER root pid 22481 cmd run-parts /etc/periodic/15min

這意味着 cron 工作運行良好。

但是我的run15min.sh文件有問題嗎?

# /etc/periodic/15min/run15min.sh
#!/bin/sh
echo "Fetch Post started : $(date)"
php /srv/app/bin/console app:fetch
echo "Fetch Post finished: $(date)"

知道它在本地工作得很好!

更新 2:

我試圖在本地的容器內手動執行.sh 文件,但在生產中卻沒有。 我收到了這條消息:

    /etc/periodic/15min # ./run15min.sh 
    /bin/sh: ./run15min.sh: Permission denied

盡管我在 docker 文件中進行了自動化:

    RUN chmod +x /etc/periodic/15min/run15min.sh 

問候

我通過直接在容器內設置授權解決了這個問題

    RUN chmod 777 /etc/periodic/15min/run15min.sh 

但我認為這不是正確的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM