Skip to content

Instantly share code, notes, and snippets.

@yaleksandr89
Last active August 14, 2024 13:22
Show Gist options
  • Save yaleksandr89/a3386f4587e7c0447e828aa99f8ee903 to your computer and use it in GitHub Desktop.
Save yaleksandr89/a3386f4587e7c0447e828aa99f8ee903 to your computer and use it in GitHub Desktop.
`0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew`
## Cron задание
Это задание выполняется каждые 12 часов.
* `0 */12 * * *`` - указывает на выполнение задания каждые 12 часов.
* `root` - пользователь, от имени которого выполняется задание.
* `test -x /usr/bin/certbot -a \! -d /run/systemd/system` - проверяет, что certbot существует и что система не использует systemd для запуска cron задач.
* `perl -e 'sleep int(rand(43200))'` - команда perl заставляет задание спать на случайное время до 12 часов (43200 секунд) для предотвращения одновременного выполнения обновления на нескольких серверах.
* `certbot -q renew` - команда для обновления сертификатов без вывода лишней информации.
## Итог
Эта команда уже настроена на автоматическое продление сертификата каждые 12 часов с использованием случайной задержки. Следовательно, нет необходимости добавлять дополнительное задание в crontab, если эта команда уже присутствует и работает. Она выполняет ту же функцию, что и команда для обновления сертификата каждую полночь, но с дополнительной проверкой и случайной задержкой для уменьшения нагрузки на серверы Let's Encrypt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment