Почему добавление файла / etc / crontabs / www-data в dockerfile сделает cron заданием для www-data при запуске контейнера (на альпийской основе) - PullRequest
1 голос
/ 07 июля 2019

Я знаю, что правильный способ добавить задание cron для пользователя www-data - запустить crontab -u www-data -e

. Чтобы сделать это в dockerfile, я должен добавить строку типа RUN crontab -u www-data /some_where/crontab.conf

* 1006.* Но я обнаружил, что если я делаю это, это тоже работает (образ докера основан на alpine3.7).
ADD /some_where/crontab /etc/crontabs/www-data
RUN chmod 0644 /etc/crontabs/www-data

Но я не могу найти документ, объясняющий, почему это работает.Так почему же это работает и означает ли это, что если я добавлю еще один файл с именем www в / etc / crontabs, он сделает cronjob для www (предположим, у меня есть пользователь www)?

1 Ответ

0 голосов
/ 07 июля 2019

См. 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 вкус вы используетеВы работаете.

И в 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
...