diff --git a/sysadmin/Linux/Bases-systemD/bases-systemd.md b/sysadmin/Linux/Bases-systemD/bases-systemd.md index 70a074f..e45e892 100644 --- a/sysadmin/Linux/Bases-systemD/bases-systemd.md +++ b/sysadmin/Linux/Bases-systemD/bases-systemd.md @@ -72,3 +72,192 @@ SystemD был создан для централизации линукса, и Итак, вернемся к systemd. +# Анализ ресурсов системы + +Для анализа системы существует утилита **systemd-analyze**. +Итак, если вы запустите ее, то вы увидите следующее: + +![alt text](image-3.png) + +Как мы видим, за 7 секунд загрузилось ядро а за 11 секунд — пользовательское пространство. Всего система загрузилась за 18.5 секунд. + +Если вам этого недостаточно, то можно использовать команду systemd-analyze blame, которая показывает также время запуска сервисов: + +```bash +$ systemd-analyze blame +3.869s dev-sda2.device +2.288s NetworkManager.service +1.606s user@1000.service +1.467s systemd-tmpfiles-setup-dev-early.service +1.445s upower.service +1.215s systemd-udev-trigger.service + 996ms systemd-journal-flush.service + 996ms systemd-journald.service + 919ms systemd-rfkill.service + 900ms iio-sensor-proxy.service + 769ms systemd-tmpfiles-setup.service + 653ms systemd-logind.service + 546ms accounts-daemon.service + 518ms polkit.service + 459ms systemd-udevd.service + 445ms systemd-tmpfiles-clean.service + 425ms systemd-userdbd.service + 395ms udisks2.service + 384ms systemd-timesyncd.service +# ... +``` + +Здесь мы можем увидеть каждый сервис, от Network Manager до демона логина. Это бывает очень полезно при оптимизации системы. + +Затем мы также можем просмотреть дерево time-critical цепи для конкретной утилиты или вывести список указанных утилит с подкомандой critical-chain: +```bash +$ systemd-analyze critical-chain +The time when unit became active or started is printed after the @ character. +The time the unit took to start is printed after the + character. + +graphical.target @11.201s +└─multi-user.target @10.795s + └─systemd-user-sessions.service @10.647s +131ms + └─network.target @10.613s + └─NetworkManager.service @8.317s +2.288s + └─basic.target @8.189s + └─dbus-broker.service @7.896s +269ms + └─dbus.socket @7.867s + └─sysinit.target @7.799s + └─systemd-timesyncd.service @7.414s +384ms + └─systemd-tmpfiles-setup.service @6.604s +769ms + └─local-fs.target @6.553s + └─boot.mount @6.317s +233ms + └─dev-sda1.device @6.291s +``` + +Наконец, давайте рассмотрим еще одну важную подкоманду, которая позволяет создавать графически (svg-формат) детализированные системные службы, которые были запущены. +```bash +$ systemd-analyze plot " boot_analysis.svg +``` + +Также можно использовать **systemd-analyze** на удаленном сервере при помощи ssh: +```bash +systemd-analyze time -H "username"@"host" +systemd-analyze blame -H "username"@"host" +systemd-analyze critical-chain -H "username"@"host" +``` +# systemd-ac-power +Утилита, для того чтобы узнать, подключены ли мы к внешнему источнику питания. +```bash +$ systemd-ac-power -v # получаем состояние батареи (подключена ли к источнику питания) +yes +$ systemd-ac-power -v --low # разряжена ли батарея +no +``` +# systemd-ask-password +Системная утилита для запрашивания пароля через TTY или UI. +```bash +systemd-ask-password [OPTIONS...] MESSAGE + +Query the user for a system passphrase, via the TTY or a UI agent. + + -h --help Show this help + --icon=NAME Icon name + --id=ID Query identifier (e.g. cryptsetup:/dev/sda5) + --keyname=NAME Kernel key name for caching passwords (e.g. cryptsetup) + --credential=NAME + Credential name for ImportCredential=, LoadCredential= or + SetCredential= credentials + --timeout=SEC Timeout in seconds + --echo=yes|no|masked + Control whether to show password while typing (echo) + -e --echo Equivalent to --echo=yes + --emoji=yes|no|auto + Show a lock and key emoji + --no-tty Ask question via agent even on TTY + --accept-cached Accept cached passwords + --multiple List multiple passwords if available + --no-output Do not print password to standard output + -n Do not suffix password written to standard output with + newline + +See the systemd-ask-password(1) man page for details. +``` +# systemd-cat +Утилита для выполнения процессов с выводом stdout/stderr, подключенный к системному журналу. +```bash +systemd-cat [OPTIONS...] COMMAND ... + +Execute process with stdout/stderr connected to the journal. + + -h --help Show this help + --version Show package version + -t --identifier=STRING Set syslog identifier + -p --priority=PRIORITY Set priority value (0..7) + --stderr-priority=PRIORITY Set priority value (0..7) used for stderr + --level-prefix=BOOL Control whether level prefix shall be parsed + +See the systemd-cat(1) man page for details. +``` +# systemd-resolve +Специальная команда, которая отвечает за файл /etc/resolv.conf. Разрешает доменные имена, адреса и т.д. При неправильном конфиге resolv«а вы не сможете работать в интернете. +```bash +systemd-resolve [OPTIONS...] HOSTNAME|ADDRESS... +systemd-resolve [OPTIONS...] --service [[NAME] TYPE] DOMAIN +systemd-resolve [OPTIONS...] --openpgp EMAIL@DOMAIN... +systemd-resolve [OPTIONS...] --statistics +systemd-resolve [OPTIONS...] --reset-statistics + +Resolve domain names, IPv4 and IPv6 addresses, DNS records, and services. + + -h --help Show this help + --version Show package version + --no-pager Do not pipe output into a pager + -4 Resolve IPv4 addresses + -6 Resolve IPv6 addresses + -i --interface=INTERFACE Look on interface + -p --protocol=PROTO|help Look via protocol + -t --type=TYPE|help Query RR with DNS type + -c --class=CLASS|help Query RR with DNS class + --service Resolve service (SRV) + --service-address=BOOL Resolve address for services (default: yes) + --service-txt=BOOL Resolve TXT records for services (default: yes) + --openpgp Query OpenPGP public key + --tlsa Query TLS public key + --cname=BOOL Follow CNAME redirects (default: yes) + --search=BOOL Use search domains for single-label names + (default: yes) + --raw[=payload|packet] Dump the answer as binary data + --legend=BOOL Print headers and additional info (default: yes) + --statistics Show resolver statistics + --reset-statistics Reset resolver statistics + --status Show link and server status + --flush-caches Flush all local DNS caches + --reset-server-features + Forget learnt DNS server feature levels + --set-dns=SERVER Set per-interface DNS server address + --set-domain=DOMAIN Set per-interface search domain + --set-llmnr=MODE Set per-interface LLMNR mode + --set-mdns=MODE Set per-interface MulticastDNS mode + --set-dnsovertls=MODE Set per-interface DNS-over-TLS mode + --set-dnssec=MODE Set per-interface DNSSEC mode + --set-nta=DOMAIN Set per-interface DNSSEC NTA + --revert Revert per-interface configuration + +See the resolvectl(1) man page for details. +``` +# Другие systemd-команды +Другие команды и ссылки на команды вы можете видеть ниже. Для просмотра справки запустите с флагом --help или посмотрите страницу мануалов (man). + +![alt text](image-4.png) + +# Компоненты systemD +systemd — набор базовых компонентов Linux-системы. Представляет собой менеджер системы и служб, который выполняется как процесс с PID 1 и запускает остальную часть системы. Основная особенность — интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. + +А также systemD очень разросся — он отвечает за несколько базовых вещей — интернет, ядро, журналирование и многое другое. + +![alt text](image-5.png) + +Systemd приносит концепцию юнитов systemd. Юниты — это некая абстракция, она содержит имя, зависимости, команды, описание, права. Юниты представлены конфигурационными файлами, размещенными в одной из директорий: + +* `/usr/lib/systemd/system/` – юниты из установленных пакетов RPM. +* `/run/systemd/system/` — юниты, созданные в рантайме. Этот каталог приоритетнее каталога с установленными юнитами из пакетов. +* `/etc/systemd/system/` — юниты, созданные и управляемые системным администратором. Этот каталог приоритетнее каталога юнитов, созданных в рантайме. + +Конфигурационные файлы похожи на ini-файлы: \ No newline at end of file diff --git a/sysadmin/Linux/Bases-systemD/image-3.png b/sysadmin/Linux/Bases-systemD/image-3.png new file mode 100644 index 0000000..3e6c7e6 Binary files /dev/null and b/sysadmin/Linux/Bases-systemD/image-3.png differ diff --git a/sysadmin/Linux/Bases-systemD/image-4.png b/sysadmin/Linux/Bases-systemD/image-4.png new file mode 100644 index 0000000..06d2445 Binary files /dev/null and b/sysadmin/Linux/Bases-systemD/image-4.png differ diff --git a/sysadmin/Linux/Bases-systemD/image-5.png b/sysadmin/Linux/Bases-systemD/image-5.png new file mode 100644 index 0000000..5272570 Binary files /dev/null and b/sysadmin/Linux/Bases-systemD/image-5.png differ