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

Обновление crontab пользователя (не интерактивно)

Я хочу обновить crontab пользователя Linux. Раньше я делал это в интерактивном режиме через ssh и crontab -e.

Я хочу автоматизировать это.

Мои потребности: мне нужно обновить crontabs. Это означает, что мне нужно уникальное имя для каждой записи. В противном случае инструмент не сможет различить «добавить» и «обновить».

Проблема: я не могу обрабатывать crontab пользователя как целый файл. Мне нужно иметь возможность обновлять каждую часть отдельно ...

Мое идеальное решение выглядело бы так:

magic-crontab-tool add-or-update unique-name-for-this crontab-snippet.file

файл crontab-snippet.file:

@hourly do-x
@weekly do-y

Результат должен выглядеть так (crontab -l)

# Start manged by magic-crontab-tool. ID: unique-name-for-this
@hourly do-x
@weekly do-y
# End unique-name-for-this

Задний план:

Все это нужно делать как обычный пользователь, без root-доступа.

Предполагая, что целевая система имеет run-parts Я бы сделал следующее. Сначала создайте одну строку в crontab пользователя, если ее еще нет. Это могло выглядеть так:

@hourly cd /home/user && run-parts --report /home/user/.cron.hourly

Можно создать несколько строк, если необходимы разные расписания, например: hourly, daily, weekly, monthly, и yearly.

Затем внутри /home/user/.cron.hourly вы можете создавать файлы по мере необходимости, каждый из которых назван в соответствии с вашей схемой именования.

Этот подход, по сути, повторяет то, что некоторые дистрибутивы (например, Ubuntu) уже делают в /etc/crontab. Разница в том, что только root может обновить /etc/crontab, но вы ищете то, что каждый пользователь сможет настроить для себя.

создать уникальные имена файлов в одном каталоге, изменить любой файл, затем добавить все в crontab:

cat *.file | crontab