crontab无法运行ubuntu 16.04

crontab无法运行ubuntu 16.04,ubuntu,docker,cron,crontab,ubuntu-16.04,Ubuntu,Docker,Cron,Crontab,Ubuntu 16.04,我已经提到了10+链接类似的问题,但没有一个工作。我在ubuntu 16.04 docker容器中工作。我正在尝试设置cron作业。我将其提交给安装cron 为了制作演示,请在crontab-e中的下一行添加(作为root用户) 保存文件时,它将通知crontab:安装新的crontab,但不会通知在指定位置创建的任何文件 以下步骤是我试图解决的问题,但没有一个有效 将crontabSHELL=/bin/sh更改为SHELL=/bin/bash 在crontab-e中追加2>&1 ***echo

我已经提到了10+链接类似的问题,但没有一个工作。我在ubuntu 16.04 docker容器中工作。我正在尝试设置cron作业。我将其提交给安装cron

为了制作演示,请在
crontab-e
中的下一行添加(作为root用户)

保存文件时,它将通知
crontab:安装新的crontab
,但不会通知在指定位置创建的任何文件

以下步骤是我试图解决的问题,但没有一个有效

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

    ***echo“每分钟运行一次此命令”>/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'

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

    谁能帮我一下我做错了什么


    更新 我尝试了@BMitch answer的相同复制,但这也会产生相同的问题。我等待了五分钟多,但是
    /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:/# 
    

    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:/#
    
    $docker run-it--rm ubuntu
    root@f2e78e1bacde:/#(apt get update和apt get install cron)>/install.log 2>&1
    root@f2e78e1bacde:/#服务cron启动
    *启动定期命令计划程序
    root@f2e78e1bacde:/#mkdir-p/var/www/public
    root@f2e78e1bacde:/#crontab->/var/www/public/cronfile.log
    >EOF
    root@f2e78e1bacde:/#crontab-l
    ******echo“每分钟运行一次此命令”>>/var/www/public/cronfile.log
    root@f2e78e1bacde:/#ls-al/var/www/public
    总数12
    drwxr-xr-x 2根根目录4096年9月7日11:54。
    drwxr-xr-x 3根根目录4096年9月7日11:53。。
    -rw-r--r--1根根目录9月30日7日11:54 cronfile.log
    root@f2e78e1bacde:/#日期
    2016年9月7日星期三11:54:18 UTC
    root@f2e78e1bacde:/#ls-l/var/spool/cron/crontab/
    总数4
    -rw------1根crontab 255 Sep 7 11:53根
    root@f2e78e1bacde:/#
    
    我100%确信cron已经在运行。“docker exec-it ubuntu/bin/bash”。这个命令把我带到ubuntu终端,在这里我可以安装cron,然后在检查运行状态时运行“servicecornstart”。在那之后,只有我尝试了上述所有。顺便说一句,我也尝试了您的解决方案cron-f,但它抛出“无法为指定会话生成/删除条目”。在这一点上我错了吗?请在评论中提及。由于cron正在运行,我无法重现您的问题。我的根crontab按预期在/var/spool/cron/crontab/root中创建,在创建/var/www/public目录后,将创建/var/www/public/cronfile.log,其中的日期戳每分钟都会更改。当cron停止并且我使用
    cron-f
    启动它时,我也没有看到任何错误。既然您在问题中没有提到要启动cron,那么可能还有其他没有提到的东西使您无法实现这一点。谢谢您的努力!我已经做了你更新的,请看我更新的问题。我从昨天开始做了30多次同样的事情:-)cron有任何错误日志(如/var/log/httpd/error.log中的apache错误日志)我注意到您没有使用
    docker run
    命令从干净的容器启动更新。请包括重现您的问题所需的一切。请查看我的更新问题,我所做的正是您所做的。此外,我也尝试在我的运行容器,但问题仍然存在。请复习,我不知道这个问题出了什么问题。请说明否决投票的原因,否则错误仍然存在。
    root@660f8f6d128e:/# cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
    
    $ 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:/#