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的文件。
下面的步骤是我试图解决这个问题,但没有一个工作。
- 将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 /中找不到任何日志文件。 也没有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:/#