crontab不工作Ubuntu 16.04

我提到了10多个类似的问题的链接,但没有一个工作。 我正在Ubuntu 16.04docker集装箱工作 。 我正在尝试设置cron作业。 我提到这个链接来安装cron。

用于在crontab -e下面添加演示(作为root用户)

 * * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log 

保存文件时会通知crontab: installing new crontab但没有在指定位置创build的文件。

下面的步骤是我试图解决这个问题,但没有一个工作。

  1. 将crontab的SHELL=/bin/sh改为SHELL=/bin/bash
  2. 在crontab -e中追加2>&1

    * * * * * echo "Run this command every minute" >> /var/www/public/cronfile.log 2>&1

  3. 检查权限/etc/crontab (root用户我也以root用户身份运行crontab -e

  4. 我在/ var / log /中找不到任何日志文件。 也没有findvar / log / syslog。 请注意这是一个Ubuntu的docker集装箱。 我曾尝试使用下面的命令,但我找不到任何与cron相关的日志。

    find / -type f -name '*.log'

注意:其实问题的根源来自这里 。 如果您需要任何其他信息,请在评论中提及。

任何人都可以帮助我在这里做错了吗?


更新

我试着@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" 

与虚拟机是一种操作系统隔离工具不同,Docker是一个应用程序隔离工具。 这意味着您在Docker容器中运行应用程序,并且在该容器中默认情况下不会运行其他OS服务组件。 所以如果你configuration你的crontab,你没有运行cron守护进程来处理这个文件并启动作业。 为了让你运行这个,需要运行一个cron -f来在前台启动守护进程。 如果您的容器运行另一个应用程序(很有可能),那么您需要像supervisord这样的工具来启动多个应用程序来运行cron。


编辑:这是我的尝试重新启动cron后在我的实验室中的错误。 正如你所看到的,该文件是为我创build的:

 $ 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:/#