Logo

Systemd

Systemd (system daemon) —  система инициализации, пришедшая на смену init (initialization), помимо init и systemd существуют другие, но они менее популярны. Разработан для улучшения работы зависимостей между службами. Позволяет делать больше одновременной работы при загрузки системы, тем самым уменьшает время загрузки.

Главные разработчики Кей Сиверс и Леннарт Поттеринг. Свободное программное обеспечение под лицензией GNU Lesser General Public License. Изначально разработан исключительно для ядра linux и не может использоваться в BSD-системах.

Система инициализации — набор скриптов, которые выполняются при загрузке системы.
units

В systemd есть понятие units (единицы), каждый units может взаимодействовать друг с другом.

Виды units:
service — запускает, останавливает или перезагружает демоны, также можно запускать SysV-сценарии.
socket — конфигурационный файл сокета, который связанный с определенным сервисом (service)
device — конфигурационный файл содержащий правило udev для обработки дерева устройств.
mount — монтирования файловой системы. Также можно получить информацию о файловой системы из файла /etc/fstab.
automount — автоматическое монтирование файловой системы.
target — логическая группировка единиц, ссылается на другие единицы. Например, bluetooth.target — запускает службы, при активации Bluetooth-устройства.
snapshot — создание ссылок на другие единицы, восстанавливает список ранее запущенных служб.
timer — подобие сron, активация единиц по таймеру.
swap — управление файлами подкачки.
path — активация других служб на основе inotify

Основные команды systemd

Список запущенны юнитов:
# systemctl

Юниты, запуск которых завершился неудачей:
# systemctl --failed

Список доступных юнитов:
# systemctl list-unit-files

Запуск юнита:
# systemctl start <unit-name>

Остановка юнита:
# systemctl stop <unit-name>

Перезагрузка юинта:
# systemctl restart <unit-name>

Перезагрузка настроек юнита:
# systemctl reload <unit-name>

Просмотреть статус юнита:
# systemctl status <unit-name>

Проверить разрешен ли запуск юнита при старте системы:
# systemctl is-enabled <unit-name>

Разрешить запуск юнита при старте системы:
# systemctl enable <unit-name>

Запретить запуск юнита при старте системы
# systemctl disable <unit-name>

Перезагрузка systemd с поиском измененных или новых юнитов:
# systemctl daemon-reload
Управление питанием

Перезагрузить компьютер:
# systemctl reboot

Выключить компьютер:
# systemctl poweroff

Спящий режим:
# systemctl suspend

Ждущий режим:
# systemctl hibernate

Гибридный сон (suspend-to-both)
# systemctl hybrid-sleep
Управлением питанием ACPI

Для управления питанием, например действие при закрытой крышки ноутбука, нужно отредактировать файл /etc/systemd/logind.conf:
HandlePowerKey: действия при нажатии кнопки питания.
HandleSuspendKey: действия при нажатии кнопки спящего режима.
HandleHibernateKey: действия при нажатии кнопки ждущего режимаs.
HandleLidSwitch: действия при закрытии крышки ноутбука.

Эти переменные могут принимать следующие значения:
ignore (пропустить).
poweroff (выключить питание).
reboot (перезагрузка).
halt (завершить работу).
suspend (спящий режим).
hibernate (ждущий режим).
hybrid-sleep (гибридный сон).
lock (блокировка).
kexec (оперативное переключение между ядрами).

По умолчанию systemd использует следующие значения:
HandlePowerKey=poweroff
HandleSuspendKey=suspend
HandleHibernateKey=hibernate
HandleLidSwitch=suspend

Для вступления изменений в силу, выполним команду:
# systemctl restart systemd-logind
Журнал (ведение, чтение логов)

Для регулирования размера файла логов, нужно отредактировать /etc/systemd/journald.conf
SystemMaxUse=100M

По умолчанию размер файла логов ограничен в 10% от размера файловой системы где он расположен (/var/log/journal)

Чтение всех логов:
# journalctl

Логи с момента запуска системы:
# journalctl -b

Если был крах системы, можно ввести параметр -1 и посмотреть логи с предыдущего запуска системы (-2 с двух предыдущих и.т.д):
# journalctl -b -1

Вывод последней записи:
# journalctl -f

Все сообщение конкретной утилиты, например systemd:
# journalctl /usr/lib/systemd/systemd

Все сообщения конкретного процесса:
# journalctl _PID=1

Все сообщения конкретного юнита:
# journalctl -u netcfg

 

Первоисточник http://www.oldnix.org/systemd/

Copyright © 2004-2020 LAERTLAB & POVELIT
НПП ЛАЭРТ. Все права защищены.
Россия, 456300, Челябинская область, г.Миасс, ул.Лихачёва 20-18, а/я 57
телефон: +7 9514 868 868, +7 967 864 8080
E-mail: laert@laertlab.ru
Понедельник-пятница: с 8-00 до 17-00 (+2 часа к московскому времени)