Несколько crontabs для одного пользователя

13

Есть ли способ использовать несколько файлов crontab для одного пользователя? Думая что-то вроде файла crontab для проекта вместо crontab для пользователя ...

Любая помощь приветствуется ...

realshadow
источник

Ответы:

13

Как правило, в любом случае рекомендуется сохранить ваш crontab в отдельном файле и установить его с помощью crontab filename. (Я храню свой файл crontab в системе контроля версий.)

Вы можете иметь несколько файлов crontab и установить их все

cat file1 file2 file3 | crontab

Команда crontabобычно управляет только одним crontab на пользователя. Но вы можете добавить системные файлы crontab в /etc/cron.dкаталог. Эти файлы имеют дополнительное поле после указания времени, которое указывает пользователя для задания, и вы можете иметь несколько файлов на пользователя. Даже если у одного из них есть синтаксическая ошибка, другие все равно будут выполняться.

Вам понадобится root-доступ для установки файлов в этот каталог.

man 5 crontab для деталей.

Я не уверен, что обход нормального механизма crontab, как это, хорошая идея, но он должен работать.

(Это предполагает реализацию "Vixie Cron", которая, вероятно, используется вашей системой.)

ПРИМЕЧАНИЕ: вы можете попробовать

crontab file1 file2 file3 # WRONG

но быстрый эксперимент показывает, что все имена файлов, кроме первого, игнорируются. Страница man говорит, что принимается одно имя файла, но не говорит, что происходит, если указано несколько имен файлов.

Кит Томпсон
источник
Я сделал это сегодня. Это было бы легко сделать, но цель этого в том, чтобы каждый «менеджер» проекта мог контролировать свой собственный crontab. При таком подходе его нужно будет комбинировать таким образом каждый раз, когда кто-то изменяет один из файлов, а это значит, что ему придется отслеживать все файлы, которые необходимо скомпилировать
1
Поэтому создайте программу (или сценарий, или что-то еще) для ее автоматизации. Обратите внимание, что вы можете вызвать crontabкоманду из записи crontab.
Кит Томпсон
1
@MateuszKonieczny: Это хорошая причина, но легко и случайно удалить ваш crontab. crontabбез аргументов читает новый crontab из stdin.
Кит Томпсон,
1
@MateuszKonieczny: Нет, я просто держу его в репозитории CVS и копирую, $HOMEкогда обновляю. (Я использую CVS, потому что Git не существовало, когда я начал это делать.)
Кит Томпсон,
1
@KeithThompson О, понял! Я создаю документ, чтобы помочь людям запускать Fedora Core 24 с нуля без всякой эволюции или gnome: github.com/barrycarter/bcapps/blob/master/FEDORA, и я хотел бы поделиться частью моего файла cron, но не всем. Ваше решение (создание bc-public-cron в каталоге GIT и bc-private-cron вне него) прекрасно подходит для всех.
Баррикартер
4

Почему ты бы так поступил? Вы можете использовать несколько строк в crontab - я думаю, что это тоже подойдет.

Есть также каталоги, которые вы, вероятно, могли бы использовать:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
багор
источник
Вот как это сейчас :) Я просто хотел бы знать, есть ли способ сделать это