我想要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 个赞
osvald
(魔法师奥兹)
3
应该是在 /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 个赞
dalong
(大龙哦)
5
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是没问题的