- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Runlevel в Linux: что это и с чем едят
- Почему важны уровни доступа
- Сколько уровней выполнения существует?
- Как узнать текущий режим работы?
- Как менять уровень выполнения?
- Linux system против runlevels
- Как поменять уровень выполнения по умолчанию?
- Разница между уровнями выполнения 3 и 5
- Просмотр список служб конкретного уровня
- Под каким уровнем работает процесс
- Меняем уровень запуска приложения
- Проблемы безопасности с уровнями доступа Linux
- Какой уровень выполнения выбрать?
- Можно ли создано новый уровень на Linux?
- linux-notes.org
- Runlevel в Unix/Linux
- Использование/Переключение runlevel в Unix/Linux
- Редактирование runlevel в Unix/Linux
- Проверка runlevel в Unix/Linux
- Добавить сервис/службу в runlevel в Unix/Linux
- Добавить комментарий Отменить ответ
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Runlevel в Linux: что это и с чем едят
А какой у тебя уровень?
Уровни выполнения (runlevel) Linux можно представить, как режим, в котором запускается система. Каждый из этих режимов обладают своими процессами, которые включены или выключены в зависимости от запущенного уровня выполнения. С момента загрузки Linux выполняется в одном из режимов, нельзя запускать систему в нескольких режимах, но есть возможность переключаться между уровнями во время работы на компьютере.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Например, при запуске системы с графическим интерфейсом выполняется один уровень, а если запускать систему в режиме командной строки выполнится другой. Это происходит потому, что режиму GUI нужны доступы к тем процессам, в которых командная строка не нуждается. В зависимости от того, какие службы нужно включить, а какие выключить система меняет уровни выполнения.
Почему важны уровни доступа
Вы можете годами пользоваться системой Linux, даже не понимая разницу между уровнями доступа, так как эта опция не является часто конфигурируемой.
Тем не менее уровни выполнения Linux дают администраторам повышенный контроль над системой.
Режим, в котором работает система, может быть изменен (как это сделать будет показано далее), как и сервисы, которые выполняются в этом режиме. Это позволяет нам полностью контролировать, к каким службам система будет иметь доступ в данный момент.
Сколько уровней выполнения существует?
В системе Linux есть семь уровней выполнения, которые нумеруются от 0 до 6. Разные дистрибутивы по-разному используют уровни выполнения, так что очень сложно составить список задач, которые выполняет конкретный уровень.
Зато вы сами можете посмотреть какие задачи выполняют уровни доступа вашего дистрибутива. Ниже приведён список уровней выполнения и основных задач, выполняемых ими.
- Runlevel 0 завершает работу системы
- Runlevel 1 однопользовательский режим работы. Чаще всего используется в целях обслуживания и выполнения других административных задач. Это уровень также может называться runlevel S, где S означает single-user. Если вам когда-то приходилось сбрасывать пароль на Linux, то вы вероятно уже пользовались этим режимом.
- Runlevel 2 многопользовательский режим работы без поддержки сетевых служб (демонов).
- Runlevel 3 многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.
- Runlevel 4 не используется. Пользователь может настраивать этот уровень исходя из его целей. О том, как это сделать также будет рассказано далее.
- Runlevel 5 этот режим схож с уровнем 3, но тут еще запускается графический интерфейс. В этом режиме работают десктопные версии Linux.
- Runlevel 6 этот уровень перезагружает систему.
Как узнать текущий режим работы?
Чтобы узнать текущий уровень выполнения достаточно ввести команду runlevel в командной строке.
На выводе этой команды две цифры. Первая указывает на предыдущий режим работы, а второй на текущий. На скриншоте вместо первой цифры указана буква N, что значит система изначально запускалась и работает в 5 режиме, о чём говорит вторая цифра 5.
Как менять уровень выполнения?
Текущий уровень выполнения можно менять командой «telinit». Ниже приведён пример смены уровня выполнения на CentOS.
Следует отметить, что эта операция требует прав привилегированного пользователя. Имейте ввиду, что на системах семейства Debian уровни выполнения работают по-другому. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.
После выполнения команды указанной выше, ваш экран может стать пустым. Это потому, что вы остались на пустом терминале, чтобы вернутся на рабочий терминал нажмите комбинацию клавиш Alt+F1.
Если запустить команду runlevel еще раз, то мы увидим, что текущий уровень выполнения 3, а предыдущий 5.
Linux system против runlevels
В последние годы systemd сменила многолетнюю систему уровней доступа (System V init). Фактически он работает по тому же принципу, но использует новые команды, которые в целом используют «runlevel» как «target».
- Runlevel 0 = poweroff.target (runlevel0.target)
- Runlevel 1 = rescue.target (runlevel1.target)
- Runlevel 2 = multi-user.target (runlevel2.target)
- Runlevel 3 = multi-user.target (runlevel3.target)
- Runlevel 4 = multi-user.target (runlevel4.target)
- Runlevel 5 = graphical.target (runlevel5.target)
- Runlevel 6 = reboot.target (runlevel6.target)
По ходу статьи мы изучим systemd и его команды.
Как поменять уровень выполнения по умолчанию?
Может быть очень много причин для того чтобы загружаться с другим уровнем выполнения. Например, системные администраторы в основном используют систему в режиме командой строки, включая графический интерфейс только в случае необходимости.
Именно для таких случаев нужно убедиться, что уровень выполнения по умолчанию 3, а не 5.
В прошлом для этого приходилось редактировать файл /etc/inittab. Вы еще можете увидеть эту практику на некоторых системах. Если вы работаете с ОС, которые давно не обновляются до новых версий, этот путь будет приемлемым.
На скриншоте уровнем выполнения по умолчанию установлен 5.
Но большинство систем Linux отказались от файла /etc/inittab в пользу systemd targets и мы рассмотрим разницу между ними по ходу статьи.
Вы можете не найти в своей системе файл /etc/inittab или же файл inittab выведет вам сообщение с советом использовать systemd.
Чтобы проверить текущий уровень выполнения по умолчанию введите команду
Система вернула нам «graphical.target». Как вы наверное и догадались, это не что иное, как уровень выполнения 5.
Чтобы просмотреть остальные «target» и уровни выполнения, ассоциированные с ними введите команду:
Символьные ссылки указывают на то, что systemd работают так же как и runlevel. Итак, что необходимо сделать, чтобы поменять уровень выполнения по умолчанию? Для этого достаточно создать новую символьную ссылку на интересующую нас цель systemd.
Данной командой мы поменяли режим запуска системы по умолчанию с уровня выполнения 5, на 3 и при следующей загрузке система выполнить именно этот уровень.
Ключ f указывает на то, что перед созданием новой символьной ссылки целевой файл должен быть удален. Это же самое могли бы сделать командой rm.
Чтобы проверит успешно ли применились изменения достаточно повторно ввести команду «systemctl get-default».
Разница между уровнями выполнения 3 и 5
Самыми часто используемыми уровнями выполнения являются уровни 3 и 5. В целом их разница сводится к тому, что 3 это режим командной строки, а 5 режим графического интерфейса.
Конечно, не во всех дистрибутивах выполняется это условие или же ваша система может быть сконфигурирована так, что эти два уровня имеют больше отличий. Дальше мы рассмотрим, как узнать, какие процессы задействованы для того или иного уровня.
Просмотр список служб конкретного уровня
Чтобы просмотреть список служб, доступных для каждого уровня до недавнего времени использовалась команда «chkconfig -list». Если у вас стоит одна из последний версий, системы, то вероятно вы получите ошибку, как на скриншоте ниже:
Чтобы проверить, какие службы запускаются во время загрузки системы в режиме графического интерфейса (уровень выполнения 5 для семейства RedHat), нужно запустить следующую команду:
Чтобы просмотреть список доступных служб другого уровня, просто замените «graphical.target» на нужную.
Под каким уровнем работает процесс
Если нужно посмотреть по каким уровнем выполнения запущена та или иная служба, можно ввести команду:
Например, чтобы посмотреть какой runlevel использует служба sshd, введите команду:
Судя по скриншоту выше, служба sshd запушена под уровнями 2,3 и 4 (multi-user.target)
Меняем уровень запуска приложения
Как было показано выше, демон SSH запущена только на уровнях 2-4. Что если нам нужно, чтобы он работал ещё и на уровне 5? Для этого нужно ввести следующее изменение:
Проблемы безопасности с уровнями доступа Linux
Как было сказано ранее, уровни доступа дают администраторам возможность управлять службами, которые работают в определённых случаях. Такая возможность детального контроля повышает безопасность системы, так как системный администратор может быть уверен, что не запущена ни одна сторонняя служба.
Проблема возникает, когда администратор не знает точно какие службы запущены и, следовательно, не может принять меры по уменьшению площади атаки.
Используя методы из данного руководства, вы можете настроить уровень выполнения по умолчанию и контролировать запущенные приложения. Это, конечно, не уменьшит нагрузку на системные ресурсы, но сервер будет более защищен.
Помните, что надо запускать тот уровень, который вам необходим. Нет смысла запускать систему в графическом режиме, если планируете работать там режиме командной строки.
Каждый уровень выполнения запускает новые службы, большинство из которых работают в фоновом режиме, и вы можете забыть обезопасить их.
Какой уровень выполнения выбрать?
Выбор режима запуска системы полностью зависит от ситуации. В основном используется один из двух режимов: либо runlevel 3, либо runlevel 5.
Если вам удобно работать с командной строкой и вам не нужен графический интерфейс, то уровень выполнения 3 самый подходящий.
Это предотвратит запуск ненужных служб. С другой стороны, если вам хочется работать в десктопном режиме или же вам нужна графическая оболочка для работы какой-то программы, то выберите уровень 5.
Если же нужно запустить систему в режиме обслуживания, то выбирайте уровень 1. В этом режиме в системе будете только вы, так как сетевые службы даже не запущены. Это позволит выполнить обслуживания без сбоя.
В редких случаях появляется необходимость использовать уровень выполнения 4. Это может быть только в том случае, если администратору нужен уровень выполнения для особых задач.
Как вы уже, наверное, заметили, мы не может запускать систему с уровнем 0 и 6, но можно переключаться на них если нужно выключить или перезагрузить систему. Но в этом нет особой необходимости, так как есть команды, которые выполняют эти операции.
Можно ли создано новый уровень на Linux?
Так как система Linux это система бесконечных возможностей, то и создание нового уровня не исключение. Но очень маловероятно, что вам когда-нибудь понадобится это. Но если вы все-таки решили создать новый уровень, то следует начать с копирования существующего уровня и изменения её под свои задачи.
Целевые уровни расположены по следующему пути:
Если хотите создать свой уровень на основе 5-го уровня выполнения, скопируйте искомую директорию в новую:
Затем в новой директории создайте поддиректорую «wants»:
Затем просто создайте символьную ссылку на дополнительные службы в директории /usr/lib/systemd/system, которые необходимы вашему уровню.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник
linux-notes.org
Runlevel в Unix/Linux
Уровень запуска — это программная конфигурация системы, которая позволяет запускать только выбранную группу процессов на определенном этапе.
Обычная последовательность загрузки в Linux состоит из нескольких этапов:
- Завершает процедуру загрузки.
- Имеет процесс с номером 1 (ID1).
- Запускает системные процессы (как описано в /etc/inittab).
- Не является частью ядра, он принадлежит пользовательскому пространству (/sbin/init).
- Никогда не умирает: он управляет жизненным циклом операционной системы (например -перезагрузка, выключение).
Существует много альтернатив для процесса init, обычно он устанавливается с одной из следующих программ запуска:
- sysvinit : традиционная программа инициализации linux — Система инициализации SysVinit
- upstart : используемый большинством дистрибутивов Linux (не используется уже).
- systemd : Можно прочитать более подробно тут — Система инициализации в Unix/Linux
- busybox : Используется для небольших встроенных систем.
При построении, эти проекты генерируют процесс init и набор общих инструментов, таких как telinit или initctl.
При загрузке init проверяет файл конфигурации inittab для параметра runlevel. Это значение изменяется от 0 до 6, и для каждого из них выполняется определенный набор действий. Данные уровни можно переопределить, но об этом немного позже.
Сейчас, init программа может юзать 10 уровней инициализации, но больше всего используются следующии сем:
- 0 — Используется для выключение ОС.
- 1 — Однопользовательский режим (single user mode). Служит для различных административных действий по восстановлению системы. На 1-м уровне выполнения, ОС сконфигурирована полностью, но при этом, не запущен ни один из сервисов, а из юзеров — работает только root-юзер.
- 2 — Данный левел не юзается, но настроен как уровень выполнения 3. В rpm ОС, даный уровень сконфигурирован как уровень 3, но без поддержки сетевых файловых систем. В deb ОС используется как многопользовательский режим.
- 3 — Многопользовательский режим (multiuser mode). Нормальный режим работы сервера.
- 4 — В Slackware Linux настроен для графического входа в ОС. В rpm — не сконфигурирован вообще.
- 5 — В deb и rpm системах, данный уровень предназначен для графического входа в систему, но Slackware Linux не сконфигурирован вообще.
- 6 — Используется для перезагрузки ОС.
-=== INIT ===-
В зависимости от установки уровня инициализации по умолчанию система будет выполнять программы из одной из следующих папок (касательно Linux, но Unix — не уверен. На Mac OS X — нет таких папок):
- Запуск на 0 уровне: /etc/rc.d/rc0.d
- Запуск на 1 уровне: /etc/rc.d/rc1.d
- Запуск на 2 уровне: /etc/rc.d/rc2.d
- Запуск на 3 уровне: /etc/rc.d/rc3.d
- Запуск на 4 уровне: /etc/rc.d/rc4.d
- Запуск на 5 уровне: /etc/rc.d/rc5.d
- Запуск на 6 уровне: /etc/rc.d/rc6.d
В этих каталогах имена программ начинаются с S или K, за которыми следуют порядковый номер и имя программы.
Программы, которые начинающиеся с S, выполняются в системе Start, а программы начинающиеся с K, выполняются в системе Kill. Номер последовательности указывает, когда программа будет выполнена.
-=== SYSTEMD ===-
В последних версиях Linux-систем, таких как RHEL 7, Ubuntu 16.04 LTS, концепция уровней запуска была заменена с init на systemd. Вот список целей (targets) Systemd в дистрибутивах Linux, которые были распространены вместе с Systemd в качестве менеджера по умолчанию:
- runlevel0.target, poweroff.target – Выключение ОС.
- runlevel1.target, rescue.target – Однопользовательский режим (single user mode).
- runlevel2.target, multi-user.target – Не используется.
- runlevel3.target, multi-user.target –Многопользовательский режим (multiuser mode). Нормальный режим работы сервера.
- runlevel4.target, multi-user.target –Не используется.
- runlevel5.target,graphical.target – Уровень запуска графического интерфейса.
- runlevel6.target,reboot.target – Перезапуск ОС.
Перейдем к примерам.
Использование/Переключение runlevel в Unix/Linux
Приведу примеры использования в init и systemd.
-=== INIT ===-
Пользователь root (суперюзверь), может выполнить следующую команду для выключения сервера:
Пользователь root (суперюзверь), может выполнить следующую команду для перезагрузки сервера:
Собственно, таким образом сожно переключатся между init-уровнями.
-=== SYSTEMD ===-
Если вы хотите изменить RunLevel, например на runlevel3.target, установите его, как показано ниже:
Или, чтобы установить multi-user.target по умолчанию, используйте следующую команду:
Вы используете команду systemctl isolate для изменения цели. Например, измените на multi-user.target (уровень запуска 3):
Или, чтобы перейти в другой таргет (цель или target), только в текущем сеансе, выполните следующую команду:
И чтобы вернуться к графический режим (уровень 5-го уровня):
Редактирование runlevel в Unix/Linux
Приведу примеры использования в init.
-=== INIT ===-
Для этого, открываем файл:
Найдите и отредактируйте запись «initdefault» на уровень выполнения по вашему выбору. Скажем, например, чтобы установить уровень запуска в многопользовательский графический режим (runlevel 5), измените его, как показано ниже:
Сохраните и закройте файл. Перезагрузите свою систему, чтобы войти в свой новый уровень запуска.
Дополнительные сведения вы можете получить:
Проверка runlevel в Unix/Linux
Приведу примеры использования в init и systemd.
-=== INIT ===-
Чтобы проверить уровень запуска вашей ОС, вы можете использовать команду runlevel без аргументов (Только для Linux ОС):
Или, можно использовать:
Еще один способ проверить ваш уровень запуска — использовать следующую команду (Работает в Unix/Linux):
Чтобы узнать, какие службы запущены на каком из уровнях, вы можете использовать:
Или с использование параметра:
-=== SYSTEMD ===-
В системах Linux, которые используют Systemd в качестве сервис-менеджера по умолчанию, вы можете найти ран-левел с помощью команды:
Используйте следующую команду, чтобы проверить runlevel:
Чтобы узнать, какие службы запущены на каком из уровнях, вы можете использовать:
Вышеуказанная команда покажет только активные цели.
Чтобы просмотреть все загруженные объекты (активные и неактивные), запустите:
Проверьте статус конкретной службы, например, демон SSH:
Проверьте, активна ли служба(работает ли она), на пример с SSH:
Для использования помощи, используйте:
Добавить сервис/службу в runlevel в Unix/Linux
Приведу примеры использования в init и systemd.
-=== INIT ===-
Например, вам нужно добавить службу (сервис) nginx на 2-й уровень, для этого вы можете выполнить:
Не сильно сложно, верно?
-=== SYSTEMD ===-
Включим службу в автозапуск при запуске ОС, например для SSH:
Проверьте, включена ли она в автозапуск следующей командой:
Чтобы убрать службу (пример с SSH) выполните:
Для оставновки службы:
Чтобы предотвратить запуск службы вручную, используйте подкоманду:
Маскированные службы не могут быть запущены с помощью команды запуска systemctl до тех пор, пока она не будет открыта:
Как-то так. А на этом, у меня все — статья «Runlevel в Unix/Linux» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник