为什么在运行容器(基于高山)时在dockerfile中添加文件/ etc / crontabs / www-data将使www-data成为cron作业

时间:2019-07-07 05:11:10

标签: docker cron alpine

我知道为用户www-data添加cron作业的正确方法是运行crontab -u www-data -e

因此要在dockerfile中做到这一点,我应该添加一行RUN crontab -u www-data /some_where/crontab.conf

但是我发现如果这样做,它也可以工作(docker镜像基于alpine3.7)。

ADD /some_where/crontab /etc/crontabs/www-data
RUN chmod 0644 /etc/crontabs/www-data

但是我找不到解释其工作原理的文档。那么,为什么它起作用了,这是否意味着如果我将另一个名为www的文件添加到/ etc / crontabs中,它将对www进行cronjob(假设我有www用户)?

1 个答案:

答案 0 :(得分:0)

请参见this

  

多用户cron

     

由于Unix是多用户操作系统,因此某些应用必须能够支持   有多个用户,cron就是其中之一。每个用户可以拥有自己的crontab   文件,可以通过命令crontab创建/编辑/删除。这个   命令会创建一个单独的crontab文件,尽管这是一个文本文件,   像/ etc / crontab一样,不应直接对其进行编辑。 crontab文件是   通常存储在/var/spool/cron/crontabs/<user>(Unix / Slackware / BSD)中,   /var/spool/cron/<user>(RedHat)或/var/cron/tabs/<user>(SuSE),   但可能会保留在其他位置,具体取决于您所运行的Un x口味。

在高山地区,它也在/var/spool/cron/crontabs中,只是/var/spool/cron/crontabs/etc/crontabs的符号链接,因此您也可以将其放在/etc/crontabs中:

/etc/crontabs # ls -alh  /var/spool/cron/crontabs
lrwxrwxrwx    1 root     root          13 Jun 19 17:14 /var/spool/cron/crontabs -> /etc/crontabs