коротко об systemd
Jan. 24th, 2017 08:29 pm
systemd
/usr/lib/systemd/system/: юниты, предоставляемые пакетами при их установке
/etc/systemd/system/: юниты, устанавливаемые системным администратором
Просмотреть список всех активных юнитов
$ systemctl list-units
Покажет любой юнит, который система загрузила или попыталась загрузить, независимо от текущего состояния в системе
$ systemctl list-units --all
неактивные юниты:
$ systemctl list-units --all --state=inactive
Посмотреть только активные юниты служб:
$ systemctl list-units --type=service
Вывод списка всех файлов юнитов
$ systemctl list-unit-files
Посмотреть только юниты, добавленные в автозагрузку:
$ systemctl list-unit-files | grep enabled
Увидеть дерево зависимостей юнита:
$ systemctl list-dependencies юнит
Чтобы показать обратные зависимости (юниты, зависящие от указанного юнита), вы можете добавить в команду флаг --reverse.
Проверка свойств юнита:
$ systemctl show юнит
Незамедлительно запустить юнит:
# systemctl start юнит
Незамедлительно остановить юнит:
# systemctl stop юнит
Перезапустить юнит:
# systemctl restart юнит
Попросить юнита перезагрузить его настройки:
# systemctl reload юнит
Показать статус юнита, а также запущен он или нет:
$ systemctl status юнит
Проверить, включен ли юнит в автозапуск при загрузке системы:
$ systemctl is-enabled юнит
Проверить, активен ли данный юнит:
$ systemctl is-active юнит
Включить юнит в автозапуск при загрузке системы:
# systemctl enable юнит
Убрать юнит из автозапуска при загрузке системы:
# systemctl disable юнит
Маскировать юнит, чтобы сделать невозможным его запуск:
# systemctl mask юнит
Снять маску юнита:
# systemctl unmask юнит
Показать страницу справочного руководства, связанного с юнитом (необходима поддержка этой функции в указанном файле юнита):
$ systemctl help юнит
Перезагрузить systemd для поиска новых или измененных юнитов:
# systemctl daemon-reload
список запущенных юнитов
$ systemctl list-unit-files | grep enabled
службы systemd, которые не смогли запуститься:
$ systemctl --failed
какие именно системные компоненты заставляют systemd ждать так долго
$ systemd-analyze blame
Управление питанием
Завершить работу и перезагрузить систему:
$ systemctl reboot
Завершить работу и выключить компьютер (с отключением питания):
$ systemctl poweroff
Перевести систему в ждущий режим:
$ systemctl suspend
Перевести систему в спящий режим:
$ systemctl hibernate
Перевести систему в режим гибридного сна (или suspend-to-both):
$ systemctl hybrid-sleep
https://wiki.archlinux.org/index.php/Systemd_(Русский)
Как использовать Systemctl для управления службами Systemd и юнитами
список команд systemd
systemd-analyze - выводит информацию о времени загрузки системы и ее производительности systemctl - основная команда для управления службами и юнитами в systemd. Используется для запуска, остановки, перезапуска и проверки статуса служб systemd-cgls - выводит древовидную структуру контрольных групп (cgroups) systemd-cgtop - выводит список процессов, запущенных в контрольных группах systemd-analyze blame - выводит список юнитов и время, затраченное на их запуск systemd-analyze critical-chain - выводит диаграмму зависимостей юнитов и время, затраченное на запуск каждого из них systemd-delta - показывает изменения в конфигурационных файлах, сделанные пользователем или системой systemd-nspawn - запускает новый процесс в изолированном окружении systemd-run - запускает произвольную команду в новом юните systemd systemd-escape - кодирует или декодирует строку для использования в юнит-файлах systemd journalctl - просмотр журнала системных сообщений localectl - управление настройками локализации и клавиатуры timedatectl - управление настройками времени и даты
journalctl
Доступ к журналу
gpasswd -a $USER wheel
Фильтрация сообщений по уровню ошибки
Вывод лога в текстовый файл
journalctl -b > /home/user/debug.log
Показывать записи журнала с момента запуска системы с расшифровкой ошибок:
journalctl -xb
journalctl -b # последняя загрузка
journalctl -b -1 # предыдущая загрузка
journalctl -b 0
journalctl -p err -b
journalctl -p err -b -1 -u NetworkManager
0 — EMERG (система неработоспособна);
1 — ALERT (требуется немедленное вмешательство);
2 — CRIT (критическое состояние);
3 — ERR (ошибка);
4 — WARNING (предупреждение);
5 — NOTICE (всё нормально, но следует обратить внимание);
6 — INFO (информационное сообщение);
7 —DEBUG (отложенная печать)
Просмотр сообщений ядра
journalctl -k
journalctl -k -b -2
journalctl --dmesg
Фильтрация по приложениям и службам
journalctl -u httpd.service -u mysql.service
journalctl -u nginx.service -u php-fpm.service —since today
Фильтрация по процессам, пользователям и группам
Просмотреть список всех доступных фильтров
man systemd.journal-fields
journalctl -F _PID # процессы
journalctl -F _UID # пользователи
journalctl -F _GID # группы
просмотреть логи всех процессов, запущенных от имени этого пользователя:
id -u www-data
journalctl _UID=33
Фильтрация по пути
journalctl /usr/bin/docker
фильтрация по дате и времени
journalctl --since "2017-05-05 00:01" --until "2017-05-06 01:40"
cat — только сообщения из логов без служебных полей;
export — бинарный формат, подходит для экспорта или резервного копирования логов;
short — формат вывода syslog;
short-iso — формат вывода syslog с метками времени в формате ISO 8601;
short-monotonic — формат вывода syslog c метками монотонного времени (monotonic timestamp);
short-precise — формат вывода syslog с метками точного времени (время событий указывается с точностью до микросекунд);
verbose — максимально подробный формат представления данных (включает даже те поля, которые в других форматах не отображаются).
Просмотр логов в режиме реального времени
journalctl -f
Просмотр информации о недавних событиях
journalctl -n
journalctl -n 20
Запись в журнал
systemd-cat echo "Текст сообщения"
journalctl -f
апр 18 01:14:13 arch1 echo[4822]: Текст сообщения
Поиск информации в журнале
journalctl SYSLOG_IDENTIFIER=Test
выводит все сообщения имеющие идентификатор сообщения Test.
Запись логов в стандартный вывод
journalctl --no-pager > log.txt
Выбор формата вывода
journalctl -u nginx.service -o json
Анализ этапа загрузки
Выявляем самые медленные процессы (от пользователя):
systemd-analyze blame
Выводим график загрузки процессов в векторный рисунок:
systemd-analyze plot > file.svg
Управление логгированием
Текущие разрешенные лимиты для журналов на диске и в памяти
systemctl status systemd-journald
journalctl -t systemd-journald
Все загрузки системы
journalctl --list-boots
Определение текущего объёма логов
journalctl --disk-usage
Настройка ротации логов в конфигурационном файле
/etc/systemd/journald.conf
/var/log/journal/
SystemMaxUse= максимальный объём, который логи могут занимать на диске;
SystemKeepFree= объём свободного места, которое должно оставаться на диске после сохранения логов;
SystemMaxFileSize= объём файла лога, по достижении которого он должен быть удален с диска;
RuntimeMaxUse= максимальный объём, который логи могут занимать в файловой системе /run;
RuntimeKeepFree= объём свободного места, которое должно оставаться в файловой системе /run после сохранения логов;
RuntimeMaxFileSize= объём файла лога, по достижении которого он должен быть удален из файловой системы /run.
systemctl restart systemd-journald # применить конфигурацию
journalctl --vacuum-size=100M # автоматически удалять все логи при превышении объёма
journalctl --vacuum-time=1months # Удалить все логии старше последнего месяца
systemctl status systemd-journald
journalctl -t systemd-journald
Централизованное хранение логов
С помощью команды systemd-journal-remote можно принимать логи с удалённых хостов
на каждом их этих хостов должен быть запущен демон systemd-journal-gatewayd
systemd-journal-remote −−url https://some.host:19531/
Команда systemd-journal-upload используется для загрузки логов с локальной машины в удалённое хранилище:
systemd-journal-upload --url https://some.host:19531/
journalctl -o export | systemd-journal-remote -o /tmp/dir -
coredumpctl
https://www.altlinux.org/Features/Core
5 инструментов из состава systemd, которые следует начать использовать прямо сейчас
Очистка списка coredumpctl
Сначала удалить журнал, удалив записи старше одного дня:
journalctl --vacuum-time=1d
Поскольку в списке «coredumpctl» перечислены файлы дампа, записанные журналом, вы можете вручную удалить файлы дампа из /var/lib/systemd/coredump, которых нет в списке.
coredumpctl list