schel4koff.ru

Компьютер — интернет — сайтостроение — SEO — монетизация

Рабочие уровни и системные процессы в ОС Linux

    Рабочие уровни и системные процессы в ОС Linux. В любой промежуток времени рабочего цикла операционной системы Linux, функционирует определенный набор основных процессов.

Это состояние компьютера называется рабочим уровнем, и отмечено числом от 1 до 6. Система проводит большую часть времени на первом рабочем уровне.

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

Самый легкий путь разобраться в рабочих уровнях — это проверить файл настроек init, /etc/inittab. Поищите строку вроде следующей:

id:5 :initdefault:

Эта строка означает, что рабочий уровень системы по умолчанию 5. Все строки в файле inittab состоят из четырех полей, разделенных двоеточиями и идущими в следующем порядке:

1) Уникальный идентификатор (короткое слово, вроде id в предыдущем примере).
2) Соответствующий номер рабочего уровня.
3) Действие, которое init должен предпринять (в предыдущем примере, действие заключалось в установке рабочего уровня по умолчанию на 5).
4) Команда на выполнение (по желанию).

В предыдущем примере initdefault нет команды на выполнение, потому что она не играет роли в установке рабочего уровня по умолчанию. Просмотрите строки ниже inittab, пока вы не увидите строку вроде этой:

14:5:wait:/etc/rc.d/rc 5

Эта отдельная строка очень важна, потому что дает начало большей части конфигурации системы и служб через каталоги *rc.d и init.d. Вы можете видеть, что init включена на исполнение команды под названием /etc/rc.d/rc 5 на рабочем уровне 5.

Действие wait сообщает о том, когда и как init запускает команду: запускает гс 5 один раз, когда входит на рабочий уровень 5, а затем ждет этой команды, чтобы закончить перед тем как сделать что-либо еще.

Существует несколько различных действий в дополнение к initdefault и wait, особенно в зависимости от управления энергией, и страница руководства inittab (5) расскажет вам о них. Те из них, с которыми вы наверняка встретитесь, описаны в этой статье.

Функция ‘respawn’
Действие respawn заставляет init запустить команду, указанную сразу за ключевым словом, и если команда закончила исполнение, запустить её еще раз. Возможно, вы увидите что-то знакомое в этой строке в файле inittab:

1:2215:respawn:/sbin/mingetty tty2

Программы getty предоставляют приглашения входа в систему. Предыдущая строка написана для первой виртуальной консоли (/dev/tty1), той, что вы видите, когда нажмете Alt+Fl или Ctrl+Alt+Fl. Действие spawn вернет приглашение входа в систему после того, как вы из нее выйдете.

Функции ‘ctrlaltdel’ и ‘sysinit’
Действие ctraltdel проверяет, что делает система, когда вы нажмете комбинацию Ctrl+Alt+Del на виртуальной консоли. В большинстве систем Linux, это что-то вроде команды перезагрузки, с использованием команды shutdown.

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

Как запускаются процессы на рабочих уровнях.
Теперь пришло время вам узнать как init запускает системные службы, как раз перед тем как позволить вам войти в систему. Вспомните эту строку inittab из уже пройденного:

14:5:wait:/etc/rc.d/rc 5

Эта небольшая строка дает начало многим другим программам, rс отвечает за запуск команд, и вы еще увидите, как люди ссылаются на команды как на сценарии, программы или службы. Итак, где же находятся эти команды?

Для рабочего уровня 5, в этом примере, команды, возможно, находятся или в /etc/rc.d/rc5.d или в /etc/rc5.d Рабочий уровень 1 использует rcl.d, рабочий уровень 2 использует rc2.d и так далее. Вы можете найти следующие элементы в каталоге гс5.d:

S10sysklogd
S12kerneld
S15netstd_init
S18netbase
S20acct
S20logoutd

Команда rс 5 начинает работу программ в каталоге этого рабочего уровня с запуска следующих команд:

S10_sysklogd start
S12_kerneld start
S15_netstd_init start
S18_netbase start
S99_sshd start

Обратите внимание на аргумент start в каждой команде. S в имени команды значит, что команда должна работать в начальном режиме, и номер (от 00 до 99) различает, в каком месте последовательности rс начинается команда.

Команды гс*.d это обычно сценарии оболочки, которые начинают работу программ в /sbin или /usr/sbin. Как правило, вы можете выяснить, что именно делает конкретная команда, просмотрев сценарий с помощью less или другой программы для работы со страницами.

Вы можете начать работу одной из этих веб-служб собственноручно. Например, если вы хотите начать работу программы сервера httpd вручную, запустите S99httpd start.

Так же, если вам когда-нибудь понадобится завершить работу одной из служб, пока компьютер работает, вы можете запустить команду в каталог re*.d с помощью аргумента stop (S99http stop, например).

Некоторые каталоги re*.d содержат команды с параметром ‘k’ (для «kill», или режима остановки). В этом случае, rс запустит команду с аргументом stop вместо start. Скорее всего, вы столкнетесь с командами k на рабочих уровнях, которые завершают работу операционной системы.

Добавление и удаление служб.
Если вы хотите добавить, удалить или изменить службы в каталогах re*.d, вам нужно повнимательнее посмотреть на вложенные файлы. Длинный список раскрывает структуру вроде этой:

Irwxrwxrwx S10-sysklogd => ../init.d/sysklogd
lrwxrwxrwx S12-kerneld => ../init.d/kerneld
Irwxrwxrwx S15-netstd_init => ../init.d/netstd_init
lrwxrwxrwx S18-netbase => ../init.d/netbase

Команды в каталоге rc*.d вообще являются символическими ссылками к файлам в каталоге init.d, обычно расположенной в /etc или /etc/red.

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

Чтобы оградить одну из команд в каталоге init.d от запуска на текущем рабочем уровне, вы должны подумать об удалении символической ссылки в соответствующем каталоге re*.d.

Это сработает, но если вы совершите ошибку и когда-нибудь вернете ссылку на место, у вас могут возникнуть проблемы с сохранением точного имени ссылки.

Следовательно, вам не следует удалять ссылки в каталогах re*.d, лучше добавить нижнее подчеркивание (_) в начало имени ссылки вот так:

mv S99httpd _S99httpd

Во время загрузки, rс проигнорирует _S99httpd, потому что она не начинается с S или k. Кроме того, настоящее имя ссылки все еще очевидно, и вы получите быстрый доступ к команде, если у вас нет другого выхода, и вам нужно запустить ее вручную.

Чтобы добавить службу, вам нужно создать сценарий аналогичный имеющимся в каталоге init.d и затем сделать символическую ссылку в правильном каталоге re*.d.

Однако, самый легкий путь написать сценарий это просмотреть готовые сценарии в init.d, сделать копию того, который вы лучше всего понимаете и видоизменить эту копию.

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

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

Обычно, в версиях Linux есть команда, позволяющая включать и выключать службы в каталогах re*.d. Например, в Debian, это команда update-rc.d, но в семействе Red Hat Linux это команда выглядит как chkconfig.

Графические пользовательские интерфейсы тоже доступны. Использование этих программ помогает поддерживать согласование каталогов и помогает в обновлении.

Одна из самых распространенных проблем в установке операционной системы Linux это неправильный выбор настроек сервера XFree86, который начинает то включаться, то выключаться, делая систему недоступной для использования с консоли.

Чтобы прекратить такое поведение системы, загрузитесь в однопользовательском режиме и перемените свой рабочий уровень или службы рабочего уровня. Ищите файлы, в названиях которых содержится xdm, gdm или kdm в ваших каталогах re*.d, или в /etc/inittab.

Вы можете посмотреть так же записи

Автор

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Schel4koff.ru © Все права защищены 2014 г.
Для любых предложений по сайту: [email protected]