如何在 docker 中每 5 分钟执行一次 cron 作业
how to perform cron jobs every 5 minutes inside docker
我想在 docker 容器内为 feeds.sh 每分钟执行一次 cron 作业,为 reminder.sh 每 5 分钟执行一次 cron 作业。它能够 运行 每分钟 feeds.sh。但是,对于 reminder.sh,它不能每 5 分钟 运行,因为它会在 docker 容器内不断抛出错误 /bin/ash: */5: not found
。
以下代码如下所示:
FROM alpine:latest
# Install curlt
RUN apk add --no-cache curl
# Copy Scripts to Docker Image
COPY reminders.sh /usr/local/bin/reminders.sh
COPY feeds.sh /usr/local/bin/feeds.sh
# Add the cron job
RUN echo ' * * * * * /usr/local/bin/feeds.sh && */5 * * * * /usr/local/bin/reminders.sh' > /etc/crontabs/root
# Run crond -f for Foreground
CMD ["/usr/sbin/crond", "-f"]
单独添加一行。
当您将 && 与 cron 一起使用时,它期望为相同的 cron 频率添加多个 cron 作业。
例如
0 * * * * a && b
因此为什么它说“*/5 not found”因为那是上面的 b
- 它认为它是 运行.
的 cron 脚本
将您的 */5 * * * * 脚本添加到它自己的命令中的单独一行。
每分钟和每 5 分钟将 Docker 文件更新为 运行
FROM alpine:latest
# Install curlt
RUN apk add --no-cache curl
# Copy Scripts to Docker Image
COPY reminders.sh /usr/local/bin/reminders.sh
COPY feeds.sh /usr/local/bin/feeds.sh
# Add the cron job
RUN echo ' * * * * * /usr/local/bin/feeds.sh' >> /etc/crontabs/root
RUN echo ' */5 * * * * /usr/local/bin/reminders.sh' >> /etc/crontabs/root
# Run crond -f for Foreground
CMD ["/usr/sbin/crond", "-f"]
我想在 docker 容器内为 feeds.sh 每分钟执行一次 cron 作业,为 reminder.sh 每 5 分钟执行一次 cron 作业。它能够 运行 每分钟 feeds.sh。但是,对于 reminder.sh,它不能每 5 分钟 运行,因为它会在 docker 容器内不断抛出错误 /bin/ash: */5: not found
。
以下代码如下所示:
FROM alpine:latest
# Install curlt
RUN apk add --no-cache curl
# Copy Scripts to Docker Image
COPY reminders.sh /usr/local/bin/reminders.sh
COPY feeds.sh /usr/local/bin/feeds.sh
# Add the cron job
RUN echo ' * * * * * /usr/local/bin/feeds.sh && */5 * * * * /usr/local/bin/reminders.sh' > /etc/crontabs/root
# Run crond -f for Foreground
CMD ["/usr/sbin/crond", "-f"]
单独添加一行。
当您将 && 与 cron 一起使用时,它期望为相同的 cron 频率添加多个 cron 作业。
例如
0 * * * * a && b
因此为什么它说“*/5 not found”因为那是上面的 b
- 它认为它是 运行.
将您的 */5 * * * * 脚本添加到它自己的命令中的单独一行。
每分钟和每 5 分钟将 Docker 文件更新为 运行
FROM alpine:latest
# Install curlt
RUN apk add --no-cache curl
# Copy Scripts to Docker Image
COPY reminders.sh /usr/local/bin/reminders.sh
COPY feeds.sh /usr/local/bin/feeds.sh
# Add the cron job
RUN echo ' * * * * * /usr/local/bin/feeds.sh' >> /etc/crontabs/root
RUN echo ' */5 * * * * /usr/local/bin/reminders.sh' >> /etc/crontabs/root
# Run crond -f for Foreground
CMD ["/usr/sbin/crond", "-f"]