У меня есть 5 веб-приложений. Структура каталогов аналогична следующей:
/var
`- /www
`- /domains
`- /domain1
`- /public_html
`- /crontabs
`- /crons
`- /domain2
`- /public_html
`- /crontabs
`- /crons
`- /domain3
`- /public_html
`- /crontabs
`- /crons
.
.
.
.
.
Каждое приложение имеет свой собственный список cron [и эти файлы содержат действительный синтаксис crontab -e like]. На данный момент это тестовый и изолированный сервер, поэтому все приложения работают под одним и тем же пользователем. Я знаю о кронах, /etc/cron.d, /etc/cron.interval (интервал = ежечасно | ежедневно | еженедельно), /var/spool/crontabs/.
Мой вопрос: есть ли альтернатива /etc/cron.d, но специфична для пользователя, где я мог бы просто создать символическую ссылку на эти кроны, и они будут выполнены? Я бы предпочел такое решение, потому что эти кроны время от времени обновляются разработчиками.
На #ubuntu ikonia предложила гуглить, как можно включить кроны, я так и не нашел такого решения. Если бы там было место, где я мог бы сделать:
include /var/www/domains/*/public_html/crontabs/crons
, это было бы совершенно потрясающе.
[EDIT] Я готов немного изменить файлы crons.
crontabs корневого уровня можно символически связать с /etc/cron.d/. Все в этой папке выполняется от имени пользователя root. Возможно, запись crontab корневого уровня будет выполнена на уровне пользователя, но это обходной путь и выходит за рамки вопроса. Пример такой символической ссылки:
# ln -s /path/to/crontab /etc/cron.d/
crontabs пользовательского уровня не могут быть созданы с помощью symlink или любого другого вида прямого управления файлами - управление crontab специально разработано, чтобы предотвратить это , Все пользовательские crontabs должны быть созданы с помощью команды crontab, чтобы все пользовательские crontabs проверялись на синтаксис и помещались в буфер в одном и том же месте.
К счастью , «crontab» делает больше, чем просто открывает редактор. Команда примет все файлы. Например, для пользователя, владеющего $ DomainName,
$ crontab /var/www/$DomainName/public_html
Так что будет довольно легко добавить crontab уровня пользователя в сценарий запуска веб-приложения.
В Ubuntu 16.04 и новее задания cron постепенно заменяются системными таймерами, но это также выходит за рамки вопроса.
На своем веб-сервере каждый виртуальный сервер предоставляет своего пользователя Linux У каждого пользователя linux есть свой crontab.