Рейтинг:0

Возможно ли, чтобы служба systemd обновлялась?

флаг in

Эй, безупречные серверщики,

Я хотел бы написать службу systemd, которая может обновлять себя.

В частности, каждые 5 минут он должен искать в Amazon S3 новые версии своего бинарного файла и .оказание услуг файлы. Если они были обновлены, он должен загрузить и заменить их, а затем перезапуститься.

К сожалению, я понимаю, что systemd не позволяет изменять используемые файлы.

Есть ли какой-то стандартный способ добиться этого?

Спасибо!

РЕДАКТИРОВАТЬ: Чтобы уточнить, я спрашиваю, возможно ли это сделать с помощью одной службы.Я понимаю, что у меня может быть пара сервисов, которые обновляют друг друга, но это кажется неэлегантным.

4snok avatar
флаг es
почему вы не хотите использовать systemd.times или cron для этой задачи?
Рейтинг:1
флаг us

Обновление файлов, связанных с файлами systemd .service или исполняемыми программами, аналогично обновлению любого другого файла.

Вы действительно должны сделать это с помощью управления конфигурацией, такого как Ansible, но чтобы сделать это как есть, ваш общий рабочий процесс может использовать скрипт bash/python, который делает следующее:

  1. Получает файл(ы) с веб-сервера/s3/etc.
    • Вы можете выполнить быструю проверку md5sum, чтобы сравнить различия. Или сравните даты, другие метаданные, чтобы определить, является ли файл новым или измененным.
  2. Замените файлы по мере необходимости
    • Вам может понадобиться останавливаться обслуживание (служба <servicename> остановить) заранее, если файлы используются.
  3. Бег systemctl демон-перезагрузка указать systemd «повторно сканировать» служебные файлы на предмет любых изменений.
  4. Перезапускает/запускает рассматриваемую службу

Затем вы можете загрузить этот скрипт в cron или как системный таймер для запуска по расписанию.

флаг in
Спасибо, я так понимаю, что ответ "нет". Нет, служба не может обновить себя — вам нужно использовать вторую службу для обновления первой.
Rino Bino avatar
флаг us
Ну, я думаю, что это больше похоже на «да, это технически возможно». Это зависит от того, какой процесс запущен в качестве службы. Если вы запустили описанный выше процесс сценария как службу systemd, вы могли бы это сделать. Как механизм самообновления, прописанный в самом процессе. Он мог даже перезапустить себя. Зависит от варианта использования, но большинство вещей всегда возможны в зависимости от того, насколько вы креативны.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.