Я хочу сделать ночной «горячий клон» от сервера A к серверу B. Рекомендуется, чтобы сервер B запускал минимальные демоны во время этого действия, поэтому я хочу создать «минимальный» уровень запуска, который в основном запускает только sshd и переключается на него / с него уровень выполнения в середине скрипта, то есть:
# do some stuff ...
# take services down
telinit 2
# do backup ...
# bring services back up
telinit 3
# do post-backup stuff ...
Я хочу сделать переключение уровня выполнения, а не явно запускать / останавливать службы, поэтому я могу использовать один и тот же сценарий на нескольких по-разному настроенных машинах (разные службы, некоторые на systemv-init, некоторые на systemd). Я хочу сохранить все это в одном сценарии для удобства обслуживания, а не создавать кучу новых сценариев запуска / остановки initd / systemd.
Итак, суть вопроса такова: * Будет ли telinit останавливать скрипт (предположим, что cron находится на обоих уровнях выполнения)? * Телинит ждет завершения или сразу же возвращается? * Если вышеперечисленное работает, это «безопасно» или есть потенциальные проблемы с подходом? * Есть ли лучший способ использовать один скрипт (опять же, я бы предпочел не устанавливать кучу новых скриптов инициализации, так что эта штука в значительной степени "автономна" и переносима)
Я создал следующий скрипт
#!/bin/bash
date
who -r
/sbin/telinit 2
who -r
/sbin/telinit 3
who -r
date
и установил в cron
* * * * * /home/iain/test &>>/tmp/test.out
Это вывод
Thu Mar 20 03:06:01 EDT 2014
run-level 3 2014-03-20 03:05 last=2
run-level 2 2014-03-20 03:06 last=3
run-level 3 2014-03-20 03:06 last=2
Thu Mar 20 03:06:01 EDT 2014
Как видите, скрипт продолжает работать. Что касается безопасности этого, только вы можете решить, основываясь на вашем тестировании в вашей среде.
В более старых системах HP-UX мы выполняли «холодные» резервные копии наших баз данных каждую ночь, используя изменения уровня выполнения. Мы запускали и останавливали базу данных на уровне выполнения 4, и в основном выполняли telinit 3, делали снимки дисков, telinit 4, начинали резервное копирование дисков. Это немного другая стратегия, чем вы смотрите, но для всех намерений и целей она будет вести себя одинаково.