Настройка и работа в Linux
adb5321d

Один из интереснейших вопросов


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

# inittab Файл описывает, как перейти

# к конкретному уровню

# Author: Miquel van Smoorenburg,

# <miquels@drinkel.nl.mugnet.org>

# Modified for RHS Linux by Marc Ewing

# and Donnie Barnes

# Уровни выполнения для RHS:

# 0 - останов (не устанавливайте

# initdefault в это значение)

# 1 - Single user mode - однопользова-

# тельский режим

# 2 - Multiuser, многопользовательский без

# NFS (Аналог 3, если не используете сеть)



# 3 - Полностью многопользовательский

# режим

# 4 - не используется (точнее, не имеет

# смысла по умолчанию)

# 5 - X11 - графический режим со

# стартом оболочки

# 6 - reboot - перезагрузка (не устанавли-

# вайте initdefault в это значение)

id:3:initdefault:

# Инициализация системы

si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0

:

l6:6:wait:/etc/rc.d/rc 6

# Что выполняется на каждом уровне

ud::once:/sbin/update

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# ИБП подключен и работает корректно

pf::powerfail:/sbin/shutdown -f -h +2

"Power Failure; System Shutting Down>

# Выполнение gettys на стандартных

# уровнях

1:2345:respawn:/sbin/mingetty tty1

:

6:2345:respawn:/sbin/mingetty tty6

# Выполнение xdm на уровне 5,

# xdm - отдельная служба

x:5:respawn:/etc/X11/prefdm -nodaemon

Формат этого файла практически не отличается от других вариантов Unix. Каждый элемент занимает 4 поля: имя, уровни старта, вариант обработки (ждать окончания - wait, рестартовать после окончания - respawn, установить стандартный уровень для старта - initdefault и т.д.), непосредственно выполняемая на данном уровне команда. Из отличий от других вариантов Unix стоит отметить наличие опции ctrlaltdel.

Что произойдет, если в приведенном файле поменять initdefault значение с 3 на 5? Это будет переход от алфавитно-цифрового входа к графическому входу в систему и наоборот. Именно это значение меняет linuxconf при выборе соответствующей опции.


В тексте явно видно деление по уровням. Фактически они отличаются набором доступных подсистем или служб, возможностью работать в многопользовательском режиме и т.п. В любой момент времени проверить текущий уровень можно командой /sbin/runlevel.

Менее известен другой файл, /etc/initscript. Разработчики отводили ему роль, аналогичную /etc/security/limits.conf, который позволяет задать лимиты для всех, группы или конкретного пользователя. /etc/initscript же выполняется перед стартом каждого из процессов в /etc/inittab. При этом собственно выполняемая команда передается как четвертый параметр. В этом файле можно задать там любые специфические действия, в частности, установку тех же самых лимитов, umask или еще что-нибудь, но уже не для пользователя, а для каждой команды из /etc/inittab файла. Обратите внимание на пример (см. man initscript), дабы не попасть в дурную ситуацию. Другой пример:

ulimit -c 0 ## core-dump прощай

eval exec "$4"


Если вы поменяли этот файл, то эффект проявится только при следующем запуске очередного процесса из-под init (т.е. если войти в систему на еще одной консоли, эффекта не будет, а вот после завершения работы с системой и повторного входа - будет).


Содержание раздела