Мне нужно добавить строку в файл crontab пользователя. Обычно я бы сделал это с crontab -e
, но я хочу сделать это с помощью сценария подготовки.
Какие-нибудь умные методы?
Как насчет:
(crontab -u USERNAME -l ; echo "line to be added") | crontab -u USERNAME -
... или (хотя прямое редактирование файлов crontab не рекомендуется):
echo "line to be added" >> /var/spool/cron/crontabs/USERNAME
(Предполагая, что ваш сценарий подготовки работает от имени пользователя root.)
Есть несколько способов
Это сработает, если вы хотите, чтобы пользователь отредактировал его
echo "normal crontab line here" >> /var/spool/cron/user
Если вы не хотите, чтобы пользователь редактировал его ... Я бы поместил файл в /etc/cron.d, который похож на
0 0 * * * username /path/to/file
Вы можете называть это как хотите.
Возвращаясь к этому годы спустя, если вы окажетесь в подобной ситуации, вам следует очень внимательно изучить инструменты управления конфигурацией. В частности, Ansible - отличный вариант, который легко вписывается в существующую инфраструктуру и имеет хороший модуль cron.
Вы можете напрямую добавлять новые crons (если у вас есть root-права). вы также можете указать пользователя, работающего от имени.
/etc/cron.d/filename