В том числе применение крон

У меня есть 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.

3
задан 10 January 2014 в 18:45

2 ответа

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 постепенно заменяются системными таймерами, но это также выходит за рамки вопроса.

0
ответ дан 10 January 2014 в 18:45

На своем веб-сервере каждый виртуальный сервер предоставляет своего пользователя Linux У каждого пользователя linux есть свой crontab.

0
ответ дан 10 January 2014 в 18:45

Другие вопросы по тегам:

Похожие вопросы: