Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1309 / 258 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 11:

Запуск и остановка системы

< Лекция 10 || Лекция 11: 12345 || Лекция 12 >

Запуск процесса init и файл /etc/inittab

Процесс init запускается ядром сразу после монтирования файловых систем из /etc/vfstab. После этого init осуществляет переход в тот режим выполнения, который ему указан. Начиная с Solaris 10 файл /etc/inittab, содержимое которого управляет тем, как init запускает службы, стал значительно короче, так как основная масса служб теперь управляется службой запуска – программой svc.startd. Вот типичный файл /etc/inittab в системе Solrais 10:

ap::sysinit:/sbin/autopush -f /etc/iu.ap
sp::sysinit:/sbin/soconfig -f /etc/sock2path
smf::sysinit:/lib/svc/bin/svc.startd   >/dev/msglog 2<>/dev/msglog
</dev/console
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog
2<>/dev/msglog
pt:s1234:powerfail:/usr/lib/svc/method/installupdates lock

Первая строка файла отвечает за инициализацию модулей STREAMS, вторая – за настройку транспорта сокетов, третья – за запуск svc.startd, который и продолжит загрузку всех остальных служб. Четвертая и пятая строки определяют завершение работы системы в случае сбоя питания.

Хотя файл inittab и потерял свое значение для запуска и перезапуска служб в Solaris начиная с Solaris 10, возможность запускать службы посредством требования их запуска в определенных режимах работы оставлена для совместимости с приложениями сторонних разработчиков. Если при установке такого приложения файл /etc/inittab был модифицирован, то для интеграции содержимого файла в общую базу данных о службах в системе следует запустить inetconv. Без этого модификация /etc/inittab не окажет никакого действия на порядок загрузки служб в системе. Все указанные в /etc/inittab службы запускаются в статусе legacy_run после запуска всех остальных служб, перечисленных в базе данных (репозитории) SMF. Это делается для того, чтобы гарантированно запустить те службы, от которых зависят указанные в /etc/inittab службы.

Сценарии запуска системы

В каталогах /etc/rcN.d лежат скрипты запуска системы. Там располагаются те скрипты, которые запускают и останавливают отдельные приложения. Имена файлов в каталогах имеют вид KnnNAME или SnnNAME, где nn – это целое положительное число, а NAME – имя приложения (обычно – демона).

Файлы, начинающиеся с буквы S (start) – это скрипты для запуска приложения, файлы, начинающиеся с K (kill) – для завершения работы приложения. Номер nn определяет порядок запуска скриптов: вначале запускаются те, что имеют меньший порядковый номер.

При переходе в тот или иной режим работы системы выполняются вначале скрипты останова приложений, а затем – скрипты запуска приложений того режима, в который происходит переход. При старте системы выполняются скрипты запуска приложений режима 3, которому соответствует этап milestone/multi-user-server.

То, какие именно скрипты запускать, описано в файле /etc/rcN ( N может принимать значения от 0 до 6 и s), который собственно и вызывается процессом init. Файлы /etc/rcN являются символическими ссылками на файлы /sbin/rcN (см. файл /etc/inittab выше).

Так, если каталог /etc/rc3.d содержит нижеуказанные скрипты (см. рис. 11.1), то первым выполнится S13kdc.master, затем S14kdc и так все по порядку (последним будет S90samba ).

Список файлов каталога /etc/rc3.d

Рис. 11.1. Список файлов каталога /etc/rc3.d

Хотя стандартным для Solaris 10 (и, вероятно, следующих версий Solaris) является запуск служб не с помощью скриптов из каталогов /etc/rcN.d, а с помощью svc.startd, возможность использования скриптов сохранена для совместимости с приложениями сторонних разработчиков. Если при установке таких приложений происходит модификация /etc/inittab и размещение скриптов в каталогах /etc/rcN.d, то приложения будут нормально загружаться в порядке, описанном выше в разделе "Запуск процесса init и файл /etc/inittab", и выполняться, как обычно.

Программы shutdown, init, poweroff, halt, reboot

Для перевода системы из одного режима в другой, в том числе для ее остановки, следует использовать специально предназначенные для этого программы.

В Solaris есть несколько таких программ:

/usr/sbin/shutdown
/sbin/init
/usr/sbin/halt
/usr/sbin/reboot
/usr/sbin/poweroff
Stop+A или L1+A

Программы /usr/sbin/shutdown, /sbin/init, /usr/sbin/halt выполняют завершение всех процессов в системе, записывают несохраненные данные на диск, и переводят систему в новый режим работы (в том числе и в состояние остановки).

Программа /usr/sbin/reboot выполняет все вышеперечисленное и затем переводит систему в режим, определенный как initdefault в /etc/inittab.

Команда /usr/sbin/poweroff обеспечивает переход в режим номер 5, т.е. она эквивалентна команде init 5.

Последняя команда (комбинация клавиш <Stop+A> или <L1+A>) доступна только в SPARC-системах, где соответствующие клавиши есть на клавиатуре и посылаемый ими код отрабатывается как аварийная остановка. Аварийную остановку следует выполнять только в крайнем случае, так как при таком завершении работы системы все процессы прерываются немедленно, без всякой записи данных на диск, и последствия могут быть незавидными для тех, чьи данные не были сохранены.

Программа shutdown

Самый общий способ остановки системы – программа shutdown, она есть в любом UNIX'e. В Solaris эта программа имеет следующий стнтаксис вызова:

shutdown [-y] [-gпериод_ожидания [-iрежим]

например

shutdown –y –g0

Эта команда выполняется только привилегированным пользователем для изменения режима работы системы. Обычно она используется для перехода из многопользовательского режима (3) в другой режим.

По умолчанию, команда переводит систему в режим 0, т.е в состояние, в котором безопасно отключать питание. Это состояние называется состоянием остановки (shutdown state).

Команда посылает всем интерактивно работающим с системой пользователям предупреждающее сообщение о том, что система готовится к переходу в другой режим работы, и окончательное сообщение о том, что этот переход начинается перед началом реальных действий по остановке. Пользователи обязаны быстро завершить свои задачи после получения предупреждающего сообщения – на это у них по умолчанию есть одна минута. Если они проигнорируют предупреждение, их процессы будут принудительно завершены, а несохраненные данные потеряются. Программа shutdown берет стандартное значение периода ожидания после каждого из этих сообщений из файла /etc/default/shutdown, если он существует. Если shutdown не может найти файл или не может прочитать значение, она выдает предупреждение и устанавливает период ожидания в 60 секунд. По умолчанию программа запрашивает подтверждение у запустившего ее администратора, прежде чем начинать остановку демонов и прекращение процессов. Опции команды используются следующим образом:

  • -y – автоматически отвечать утвердительно на все запросы о реальном желании перезагрузить систему так, что команда может работать без вмешательства администратора;
  • -g – период_ожидания, позволяет администратору изменять стандартный период_ожидания (в секундах);
  • -i – задает режим, в которое будет переведена система после предупреждений, если они выдаются. По умолчанию используется режим s.

Файл /etc/default/shutdown используется для задания значений, специфичных для вашей системы.

Программа shutdown ведет себя по-разному в зависимости от количества интерактивно работающих пользователей. Если в системе работает несколько пользователей, выдаются предупреждающее и окончательное сообщение, а также запрос на подтверждение остановки системы тому, кто запустил программу shutdown. Если зарегистрирован только пользователь, выполняющий команду shutdown, или если период ожидания задан равным нулю, предупреждающее сообщение не выдается.

Если указать ключ –y, то запрос на подтверждение не выводится: предполагается положительный ответ на него.

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

При запуске Solaris автоматически начинают работать различные системные службы (демоны), и перед завершением работы системы они должны корректно закончить свою деятельность. Команда shutdown требует от демонов завершения, а также инициирует запись на диск всех закэшированных данных файлового кэша и демонтирование всех файловых систем.

Стоит отметить, что кроме неукоснительного выполнения корректного завершения работы системы с помощью команды shutdown или аналогичной ей по смыслу, есть еще одно дело, о котором системный администратор должен помнить: стабильное электропитание. Если пьяный сантехник, ретивая уборщица или безмозглый помощник научены никогда не выдирать провода из розеток и всегда выполнять shutdown, это значит, что осталось установить надежную систему бесперебойного питания. Подсоединяя UPS к компьютеру, убедитесь, что он настроен так, чтобы выдавать сигнал бедствия компьютеру при отключении электропитания; получив такой сигнал, система немедленно запустит shutdown и ее работа завершится безболезненно. Конечно, для систем круглосуточной работы надо иметь UPS с запасом энергии батарей, достаточным для работы в течение всего времени восстановления питания.

< Лекция 10 || Лекция 11: 12345 || Лекция 12 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Александр Васильченко
Александр Васильченко
Россия
Денис Гайдуль
Денис Гайдуль
Россия, Подольск