Как безопасно тестировать юниты

Так, мы уже знаем, как безопасно переопределять юниты, как их дебажить, ну и так, по мелочи.

Но не знаем, как всё это дело тестировать. А для тестирования тебе пригодится ключик --runtime.

Ключ --runtime создаёт временное переопределение, которое исчезнет после перезагрузки.

Идеально подходит, если ты тестишь, не уверен или не хочешь ничего портить.

А вот и сама команда:

SYSTEMD_EDITOR=vim systemctl edit --runtime nginx

Как ты мог заметить, зачастую по умолчанию открывается редактор Nano, но у многих с ним проблемы. Поэтому в команде сразу втыкаем нужный редактор, например mcedit или Vim.

Всё! Теперь правим юнит, тестируем. Временный файл с override будет создан тут: /run/systemd/.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
И самое главное — все изменения сохранятся только до следующей перезагрузки системы.

А какая в этом польза?

  1. Для временного изменения конфигурации systemd без затрагивания оригинального файла.
  2. Для тестов или отладки, например сменить ExecStart для nginx только на время текущей сессии.
  3. Чтобы не создавать перманентные изменения, которые могут повлиять на стабильность после перезагрузки.

Пример с nginx

Хочу временно запустить nginx с другим конфигом! Создаю рантайм.

[Service]
ExecStart=
ExecStart=/usr/sbin/nginx -c /home/user/nginx-bashdays.conf

Перезапускаю nginx и радуюсь результату, теперь nginx запущен с другим конфигом.

А почему ExecStart идёт дважды?

Хе, брат, это очередная приколюха systemd. Оно очищает предыдущее значение ExecStart из основного юнита. А следующая строка задаёт новое значение.

Без этой хуйни systemd бы просто добавил вторую команду, не заменив первую.

Думаю, на этом можно закончить. Я неочевидную базу выдал, а ты стал ещё сильнее. Изучай и ничего не бойся!