Systemd
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/