求助docker设置定时任务

我想要build一个docker镜像,定期执行定时任务,然后将定时任务执行脚本的结果返回到dockerlog上,这个镜像是基于debian的。
按照以往的操作,使用cron 前台运行可以实现这个要求
尝试使用cron -f 运行,随后发现,定时任务根本没有起作用,
我尝试在
var/spool/cron/crontabs/root

/etc/cron.d/daily 文件上加入

* * * * *   date >> /app/linux.log  2>&1

发现linux.log没有任何内容
随后使用
service cron start
还是没有任何内容
求助gpt等,gpt就说使用cron -f 就可以实现这个效果,但是我现在连定时任务都执行不了,所以只能求助各位佬了

6 个赞

/app 目录存在吗

2 个赞

应该是在 /etc/cron.d/ 目录下,daily 如字面意思,每天执行

对 docker 也不是很熟。。一般是 docker exec -it <容器ID> /bin/bash,然后测试命令,觉得没问题了,接着把修改加到 dockerfile

提供另一个 cmd 命令示例,仅供参考:

sh -c "echo '* * * * * date >> /app/linux.log  2>&1 &' > /var/spool/cron/crontabs/root && chmod 600 /var/spool/cron/crontabs/root && chown root:crontab /var/spool/cron/crontabs/root && service cron restart && tail -f /app/linux.log"
1 个赞

看看是否是当前用户为执行用户?以及试一下直接写一个脚本,把date改为脚本执行?还有就是确认/app/linux.log是否存在

1 个赞

Debian GNU/Linux 12 中,我的Dockerfile:

COPY ./cron.d /etc/cron.d
RUN chmod 0644 /etc/cron.d/*

最后,docker-compose的command: bash -c ‘cron’

另外给你一下我的cron.d下的文件

* * * * * root xxxx >> cron-run.log 2>&1

1 个赞

终端直接运行 date >> /app/linux.log 2>&1是没问题的

存在的~