Назад | Перейти на главную страницу

Программно добавить запись в crontab пользователя

Мне нужно добавить строку в файл 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