我知道为用户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用户)?
答案 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