<Предыдущая | Содержание: | Следующая>
5.4. Управление услугами
Кали использует Systemd в качестве своей системы инициализации, которая не только отвечает за последовательность загрузки, но и постоянно действует как полнофункциональный диспетчер служб, запускающих и отслеживающих службы.
Systemd можно запрашивать и контролировать с помощью systemctl. Без каких-либо аргументов он запускает список единиц systemctl команда, которая выводит список активных единиц. Если ты бежишь статус systemctl, выходные данные показывают иерархический обзор запущенных служб. Сравнивая оба выхода, вы сразу видите, что существует несколько видов единиц и что услуги - только одна из них.
Каждая услуга представлена сервисная единица, который описывается служебным файлом, обычно поставляемым в
/ lib / systemd / system / (или / run / systemd / system /, или / etc / systemd / system /; они перечислены в порядке возрастания важности, и последний из них побеждает). Каждый может быть изменен другим наименование услуги.service.d / *. conf файлы в том же наборе каталогов. Эти файлы модулей представляют собой простые текстовые файлы, формат которых основан на хорошо известных файлах «* .ini» Microsoft Windows с ключ
= ценностное пары, сгруппированные между [.] заголовки. Здесь мы видим пример служебного файла для / lib / systemd / system / ssh.service:
[Ед. изм]
Описание = Сервер OpenBSD Secure Shell After = network.target auditd.service ConditionPathExists =! / Etc / ssh / sshd_not_to_be_run
[Обслуживание]
EnvironmentFile = - / etc / default / ssh ExecStart = / usr / sbin / sshd -D $ SSHD_OPTS ExecReload = / bin / kill -HUP $ MAINPID KillMode = process
Перезагрузка = при сбое RestartPreventExitStatus = 255 Тип = уведомление
[Установить]
WantedBy = multi-user.target Псевдоним = sshd.service
[Ед. изм]
Описание = Сервер OpenBSD Secure Shell After = network.target auditd.service ConditionPathExists =! / Etc / ssh / sshd_not_to_be_run
[Обслуживание]
EnvironmentFile = - / etc / default / ssh ExecStart = / usr / sbin / sshd -D $ SSHD_OPTS ExecReload = / bin / kill -HUP $ MAINPID KillMode = process
Перезагрузка = при сбое RestartPreventExitStatus = 255 Тип = уведомление
[Установить]
WantedBy = multi-user.target Псевдоним = sshd.service
Целевые юниты - еще одна часть дизайна systemd. Они представляют желаемое состояние, которого вы хотите достичь с точки зрения активированных единиц (что означает работающую службу в случае единиц обслуживания). Они существуют в основном как способ группировки зависимостей от других модулей. Когда система запускается, она позволяет единицам, необходимым для достижения по умолчанию.цель (что является символической ссылкой на графический.таргет, а это, в свою очередь, зависит от многопользовательская.цель). Таким образом, все зависимости этих целей активируются во время загрузки.
Такие зависимости выражаются Хочет директива на целевом устройстве. Но вам не нужно редактировать целевой модуль для добавления новых зависимостей, вы также можете создать символическую ссылку, указывающую на
зависимая единица в / и т.д. / systemd / system /целевое имя.target.wants / каталог. И это именно то, что systemctl включить foo.service делает. Когда вы включаете службу, вы указываете systemd добавить зависимость от целей, перечисленных в Разыскивается запись [Установить] раздел файла служебной единицы. Наоборот, systemctl disable foo.service удаляет ту же символическую ссылку и, следовательно, зависимость.
В включить и запрещать команды ничего не меняют относительно текущего статуса сервисов. Они влияют только на то, что произойдет при следующей загрузке. Если вы хотите запустить службу немедленно, вы должны выполнить запуск системы foo.service. И наоборот, вы можете остановить это с помощью системная остановка foo.service. Вы также можете проверить текущий статус службы с помощью статус systemctl foo.service, который включает последние строки связанного журнала. После изменения конфигурации службы вы можете перезагрузить ее или перезапустить: эти операции выполняются с помощью systemctl перезагрузить foo.service и systemctl перезапуск фу. услуга соответственно.
# статус systemctl postgresql
● postgresql.service - СУБД PostgreSQL
Загружено: загружено (/lib/systemd/system/postgresql.service; отключено; предустановка поставщика:
➥ отключен)
Активный: неактивный (мертвый)
# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service
ls: нет доступа к '/etc/systemd/system/multi-user.target.wants/postgresql.service': Нет
➥ такой файл или каталог
# systemctl включить postgresql
[...]
# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service
lrwxrwxrwx 1 root root 38 21 апреля, 16:21 /etc/systemd/system/multi-user.target.wants/
➥ postgresql.service -> /lib/systemd/system/postgresql.service
# статус systemctl postgresql
● postgresql.service - СУБД PostgreSQL
Загружено: загружено (/lib/systemd/system/postgresql.service; включено; предустановка поставщика:
➥ отключен)
Активный: неактивный (мертвый)
# systemctl start postgresql
# статус systemctl postgresql
● postgresql.service - СУБД PostgreSQL
Загружено: загружено (/lib/systemd/system/postgresql.service; включено; предустановка поставщика:
➥ отключен)
Активен: активен (покинул) с Thu 2016-04-21 16:22:29 EDT; 2с назад Процесс: 6355 ExecStart = / bin / true (код = завершен, статус = 0 / УСПЕХ)
Основной PID: 6355 (код = выход, статус = 0 / УСПЕШНО)
21 апреля, 16:22:29 kali-Rolling systemd [1]: Запуск СУБД PostgreSQL ... 21 апреля 16:22:29 kali-Rolling systemd [1]: Запуск СУБД PostgreSQL.