У меня есть сценарий, который я хочу выполнить перед выключением или перезагрузкой машины:
/etc/init.d/init.sh
#!/бин/ш
### НАЧАЛО ИНФОРМАЦИИ
# Предоставляет: init.sh
# Обязательное начало: $all
# Обязательная остановка:
# Старт по умолчанию: 2 3 4 5
# Стоп по умолчанию: 0 1 6
# Краткое описание: xxx
# Описание: ххх
### КОНЕЦ ИНФОРМАЦИИ
если [ "$1" = "старт" ]; тогда
эхо "сообщение журнала"
su - azureuser -c '/bin/bash /my/script/dir/script1.sh'
эхо "сообщение журнала"
su - azureuser -c '/bin/bash /my/script/dir/script2.sh -p "parameter2"'
фи
если [ "$1" = "стоп" ]; тогда
эхо "сообщение журнала"
su - azureuser -c '<какая-то команда оболочки>'
cd /my/script/dir/sub
./script3.sh параметр3
su - azureuser -c 'cd /my/script/dir/sub; ./script4.sh параметр4 --option1 --option2 --option3 какое-то значение'
фи
выход 0
(Я запутал пути и имена файлов, но сохранил общую структуру для этой темы, очевидно, ничего не названо так, как здесь)
Сценарий работает нормально во время запуска, но жалуется, что очистка, которая должна была произойти в останавливаться
блокировка не была выполнена, и я не вижу сообщения журнала, созданного в останавливаться
заблокировать в системном журнале. Запуск скрипта из командной строки (sudo /etc/init.d/init.sh остановить
) работает как шарм с обоими Начало
и останавливаться
параметры, поэтому я не понимаю, почему он не работает, когда я останавливаю свою машину, почти уверен, что сценарии уровня выполнения запускаются от имени пользователя root.
В моей системе существуют следующие символические ссылки:
/etc/rc0.d/K01init.sh
/etc/rc1.d/K01init.sh
/etc/rc2.d/S99init.sh
/etc/rc3.d/S99init.sh
/etc/rc4.d/S99init.sh
/etc/rc5.d/S99init.sh
/etc/rc6.d/K01init.sh
все указывают на один и тот же скрипт и т.д./инит.д/инит.ш. Основываясь на другой теме, я также пробовал без .ш
суффикс, который ничего не изменил.
Разрешения для сценарий1
и сценарий2
оба 750
и для сценарий3
и сценарий4
даже 755.
Где я ошибаюсь? Я использую Ubuntu 18.04, и мой текущий уровень выполнения равен 5 (но это не должно иметь значения, так как здесь должно быть около 0 и 6). Сам сценарий (включая подскрипты) здесь не обсуждается, он отлично работает в другой среде, а ручные запуски приводят к желаемому состоянию в этой среде, поэтому моя настройка (или понимание) сценариев инициализации должна где-то быть неправильной.
Если актуально: я про перезагрузки как через судо перезагрузка
и через графический интерфейс Azure (это виртуальная машина), не уверен, что механизм перезагрузки Azure отличается. Ни один из способов не работает.