Мы начнем эту статью с общего и краткого обзора того, что происходит с момента нажатия кнопки Мощность кнопка, чтобы включить ваш RHEL 7 server, пока вам не будет представлен экран входа в систему в интерфейсе командной строки.
Обратите внимание:
1. те же основные принципы применимы, возможно, с небольшими изменениями, и к другим дистрибутивам Linux, и
2. Следующее описание не предназначено для представления исчерпывающего объяснения процесса загрузки, а представляет собой только основы.
1. В СООБЩЕНИЕ (Самотестирование при включении) инициализирует и выполняет проверку оборудования.
2. Когда СООБЩЕНИЕ завершается, управление системой передается загрузчику первой ступени, который хранится либо на загрузочный сектор одного из жестких дисков (для старых систем, использующих BIOS и MBR) или выделенный (U) EFI раздел.
3. Затем загрузчик первой ступени загружает загрузчик второй ступени, чаще всего GRUB (Унифицированный загрузчик GRand), который находится внутри
/boot, который, в свою очередь, загружает ядро и исходную файловую систему на основе ОЗУ (также известную как initramfs, который содержит программы и двоичные файлы, которые выполняют необходимые действия, необходимые для монтирования фактической корневой файловой системы).4. Нам предоставляется экран-заставка, который позволяет нам выбрать операционную систему и ядро для загрузки:
5. Ядро настраивает оборудование, подключенное к системе, и после того, как корневая файловая система смонтирована, запускает процесс с PID 1, который, в свою очередь, инициализирует другие процессы и выдаст нам приглашение для входа в систему.
Примечание: Если мы захотим сделать это позже, мы можем изучить специфику этого процесса, используя команда dmesg и фильтрация его вывода с помощью инструментов, которые мы объясняли в предыдущих статьях этой серии.
В приведенном выше примере мы использовали хорошо известный команда ps для отображения списка текущих процессов, родительский процесс которых (или, другими словами, процесс, который их запустил) systemd (системный и сервисный менеджер, на который переключилось большинство современных дистрибутивов Linux) во время запуска системы:
# ps -o ppid, pid, uname, comm --ppid = 1.
Помните, что -о флаг (сокращение от -формат) позволяет представить вывод пс в индивидуальном формате в соответствии с вашими потребностями, используя ключевые слова, указанные в СТАНДАРТНЫЕ ХАРАКТЕРИСТИКИ ФОРМАТА раздел в человек пс.
Другой случай, в котором вы захотите определить вывод пс вместо использования по умолчанию - это когда вам нужно найти процессы, которые вызывают значительную нагрузку на ЦП и / или память, и отсортировать их соответствующим образом:
# ps aux --sort = + pcpu # Сортировать по% CPU (по возрастанию) # ps aux --sort = -pcpu # Сортировать по% CPU (по убыванию) # ps aux --sort = + pmem # Сортировать по% MEM (по возрастанию) # ps aux --sort = -pmem # Сортировать по% MEM (по убыванию) # ps aux --sort = + pcpu, -pmem # Объединить сортировку по% CPU (по возрастанию) и% MEM (по убыванию)
Немногие решения в мире Linux вызвали больше споров, чем принятие systemd основными дистрибутивами Linux. Сторонники Systemd называют его основными преимуществами следующие факты:
Читайте также:История "init" и "systemd"
1. Systemd позволяет выполнять больше обработки параллельно во время запуска системы (в отличие от более старых SysVinit, который всегда имеет тенденцию быть медленнее, потому что он запускает процессы один за другим, проверяет, зависит ли одно от другого, а затем ожидает запуска демонов, чтобы можно было запустить больше служб) и
2. Он работает как динамическое управление ресурсами в работающей системе. Таким образом, службы запускаются по мере необходимости (чтобы избежать потребления системных ресурсов, если они не используются) вместо того, чтобы запускаться без уважительной причины во время загрузки.
3. Обратная совместимость с SysVinit скрипты.
Systemd контролируется systemctl полезность. Если вы приехали из SysVinit фон, скорее всего, вы будете знакомы с:
В следующей таблице показаны сходства между использованием этих устаревших инструментов и systemctl:
Устаревший инструмент | Эквивалент Systemctl | Описание |
начало имени службы | начальное имя systemctl | Начальное имя (где имя - услуга) |
остановка имени службы | имя остановки systemctl | Остановить имя |
название службы condrestart | systemctl имя попытки перезапуска | Имя перезапуска (если оно уже запущено) |
перезапуск имени службы | имя перезапуска systemctl | Имя перезапуска |
перезагрузка имени службы | имя перезагрузки systemctl | Перезагружает конфигурацию для имени |
название службы статус | имя статуса systemctl | Отображает текущий статус имени |
service –status-all | systemctl | Отображает статус всех текущих сервисов |
имя chkconfig на | systemctl enable имя | Разрешить запуск имени при запуске, как указано в файле модуля (файл, на который указывает символическая ссылка). Процесс включения или отключения автоматического запуска службы при загрузке заключается в добавлении или удалении символических ссылок внутри каталога / etc / systemd / system. |
chkconfig имя выключено | systemctl отключить имя | Отключает запуск имени при запуске, как указано в файле модуля (файл, на который указывает символическая ссылка) |
chkconfig – имя списка | systemctl is-enabled имя | Убедитесь, что имя (конкретная служба) в настоящее время активировано |
chkconfig –list | systemctl –type = service | Отображает все службы и сообщает, включены они или отключены |
выключение -h сейчас | systemctl poweroff | Выключите машину (остановка) |
выключение -r сейчас | перезагрузка systemctl | Перезагрузите систему |
Systemd также представили концепции единиц (которые могут быть либо службой, точкой монтирования, устройством или сетевым сокетом) и целями (которые как systemd удается запустить несколько связанных процессов одновременно, и его можно рассматривать - хотя и не равным - как эквивалент уровней запуска в На основе SysVinit системы.
Другие задачи, связанные с управлением процессами, включают, помимо прочего, возможность:
Это достигается за счет Ренис служебная программа, которая изменяет приоритет планирования одного или нескольких запущенных процессов. Проще говоря, приоритет планирования - это функция, которая позволяет ядру (присутствует в версиях => 2.6) для распределения системных ресурсов в соответствии с назначенным приоритетом выполнения (иначе говоря, удобством, в диапазоне от -20 через 19) данного процесса.
Базовый синтаксис Ренис как следует:
# renice [-n] идентификатор приоритета [-gpu].
В приведенной выше универсальной команде первый аргумент - это значение приоритета, которое будет использоваться, тогда как другой аргумент может быть интерпретирован как процесс ID (что является настройкой по умолчанию), идентификаторы групп процессов, идентификаторы пользователей или имена пользователей. Обычный пользователь (кроме root) может изменять только приоритет планирования процесса, которым он или она владеет, и только повышать уровень удобства (что означает использование меньшего количества системных ресурсов).
Точнее говоря, завершение процесса дает право послать ему сигнал для корректного завершения его выполнения (SIGTERM = 15) или сразу (SIGKILL = 9) сквозь команды kill или pkill.
Разница между этими двумя инструментами заключается в том, что первый используется для завершения определенного процесса или группа процессов в целом, в то время как последняя позволяет делать то же самое на основе имени и других атрибуты.
Кроме того, pkill поставляется в комплекте с pgrep, который показывает, какие PID будут затронуты при использовании pkill. Например, перед запуском:
# pkill -u gacanepa.
Может быть полезно сразу просмотреть, какие PID принадлежит гаканепа:
# pgrep -l -u gacanepa.
По умолчанию оба убийство и pkill Отправить SIGTERM сигнал к процессу. Как мы упоминали выше, этот сигнал можно игнорировать (пока процесс завершает свое выполнение или для хорошо), поэтому, когда вам серьезно нужно остановить запущенный процесс по уважительной причине, вам нужно будет указать СИГКИЛЛ сигнал в командной строке:
# kill -9 identifier # Убить процесс или группу процессов. # kill -s Идентификатор СИГНАЛА # То же. # pkill -s Идентификатор СИГНАЛА # Убить процесс по имени или другим атрибутам
В этой статье мы объяснили основы процесс загрузки в RHEL 7 system и проанализировали некоторые доступные инструменты, которые помогут вам в управлении процессами с помощью общих утилит и команд, специфичных для systemd.
Обратите внимание, что этот список не предназначен для того, чтобы охватить все навороты этой темы, поэтому не стесняйтесь добавлять свои собственные предпочтительные инструменты и команды в эту статью, используя форму комментариев ниже. Вопросы и другие комментарии также приветствуются.