我已经提到了10个类似问题的链接但没有一个有效。我在 ubuntu 16.04 docker container 中工作。我正在尝试设置cron工作。我引用了这个link来安装cron。
用于在crontab -e
(作为root用户)
* * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log
保存文件时,它会通知crontab: installing new crontab
,但不会在指定位置创建文件。
以下步骤是我试图解决这些问题,但没有一个有效。
SHELL=/bin/sh
更改为SHELL=/bin/bash
在crontab -e
中附加2>& 1 * * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log 2>&1
检查权限/etc/crontab
(root用户我也是以root用户身份运行crontab -e
)
我在/ var / log /中找不到任何日志文件。还找不到var / log / syslog。请注意,它是一个ubuntu docker容器。我尝试过以下命令,但我找不到任何与cron相关的日志。
find / -type f -name '*.log'
注意:实际上问题的根源来自here。如果您需要任何其他信息,请在评论中提及。
任何人都可以帮我解决我在这里做错的事吗?
我尝试了@BMitch答案的相同复制,但这也会产生同样的问题。我等了五分钟以上,但在/var/www/public/cronfile.log
中没有生成cron日志文件,请查看我的资料
[root@bu bu]# docker run -it --rm ubuntu
root@a256be07f23a:/# ( apt-get update && apt-get install cron ) >/install.log 2>&1
root@a256be07f23a:/# service cron start
* Starting periodic command scheduler cron [ OK ]
root@a256be07f23a:/# mkdir -p /var/www/public
root@a256be07f23a:/# crontab - <<EOF
> * * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log
> EOF
root@a256be07f23a:/# crontab -l
* * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log
root@a256be07f23a:/# date
Fri Sep 9 04:47:50 UTC 2016
root@a256be07f23a:/# date
Fri Sep 9 04:50:59 UTC 2016
root@a256be07f23a:/# ls -al /var/www/public
total 0
drwxr-xr-x 2 root root 6 Sep 9 04:47 .
drwxr-xr-x 3 root root 20 Sep 9 04:47 ..
root@a256be07f23a:/# date
Fri Sep 9 04:51:21 UTC 2016
root@a256be07f23a:/# ls -l /var/spool/cron/crontabs/
total 4
-rw------- 1 root crontab 254 Sep 9 04:47 root
root@a256be07f23a:/#
版本检查
root@660f8f6d128e:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
答案 0 :(得分:2)
Docker是一种应用程序隔离工具,与虚拟机是操作系统隔离工具的方式不同。这意味着您在Docker容器内运行应用程序,并且在该容器中默认情况下没有其他OS服务组件正在运行。因此,如果您配置了crontab,则不会运行cron守护程序来处理该文件并启动作业。要让它运行,需要运行cron -f
以在前台启动守护程序。如果您的容器运行另一个应用程序(很可能),那么您需要一个像supervisord这样的工具来启动多个应用程序来运行cron。
编辑:这是我尝试在启动cron后在我的实验室中重现错误。如您所见,该文件是为我创建的:
$ docker run -it --rm ubuntu
root@f2e78e1bacde:/# ( apt-get update && apt-get install cron ) >/install.log 2>&1
root@f2e78e1bacde:/# service cron start
* Starting periodic command scheduler
root@f2e78e1bacde:/# mkdir -p /var/www/public
root@f2e78e1bacde:/# crontab - <<EOF
> * * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log
> EOF
root@f2e78e1bacde:/# crontab -l
* * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log
root@f2e78e1bacde:/# ls -al /var/www/public
total 12
drwxr-xr-x 2 root root 4096 Sep 7 11:54 .
drwxr-xr-x 3 root root 4096 Sep 7 11:53 ..
-rw-r--r-- 1 root root 30 Sep 7 11:54 cronfile.log
root@f2e78e1bacde:/# date
Wed Sep 7 11:54:18 UTC 2016
root@f2e78e1bacde:/# ls -l /var/spool/cron/crontabs/
total 4
-rw------- 1 root crontab 255 Sep 7 11:53 root
root@f2e78e1bacde:/#