Я хочу обновить 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