docker - 为什么在 dockerfile 中添加文件 /etc/crontabs/www-data 将使运行容器时 www-data 的 cron 作业(基于高山)
问题描述
我知道为用户 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 用户)?
解决方案
看到这个:
多用户 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 风格。
而在alpine中,它也在/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
推荐阅读
- google-apps-script - Google 表格自动复制、粘贴、删除
- neo4j - 如果前一个没有任何结果,Cypher Neo4J 中的 UNWIND 语句不会被执行?
- c++ - 导出编译时间常数,同时限制类可见性
- regex - 有没有办法在 Notepad++ 中自动删除符号?
- zenject - 是否可以注入一个没有与之关联的预制件/游戏对象的组件?
- python - 如何查找 A 列中的每个值的所有匹配项,该值也在 B 列中
- python - 将大型数据框加载到 Vertica
- debugging - Delve (dlv) 无法附加到进程
- c# - 使用命名的捕获组会导致不同的匹配
- python - 我如何编码让用户设置自己的种子