diff --git a/s4a.tex b/s4a.tex index 6587b3f..83159a7 100644 --- a/s4a.tex +++ b/s4a.tex @@ -419,7 +419,12 @@ alias psc='ps xawf -eo pid,user,cgroup,args' Альтернативный способ получить ту же информацию~--- воспользоваться утилитой +systemd-cgls+, входящей в комплект поставки systemd. Она отображает иерархию -контрольных групп в виде псевдографической диаграммы-дерева: +контрольных групп в виде псевдографической диаграммы-дерева\footnote{Прим. +перев.: Стоит заметить, что в нижеприведенном листинге используется +ASCII-псевдографика. Между тем, уже довольно давно отображение иерархии +процессов в +systemd-cgls+ и +systemctl status+ производится в более +выразительной ├юникодной └псевдографике. ASCII-вариант выводится только в том +случае, если консоль не~поддерживает Unicode.}: \begin{landscape} \begin{Verbatim}[fontsize=\small] @@ -2127,7 +2132,7 @@ systemd? позволяющей прочитать из файла набор переменных окружения, который будет установлен при запуске службы. Если же для задания настроек вам необходим полноценный язык программирования~--- ничто не~мешает им воспользоваться. -Например, вы можете создайть в +/usr/lib//+ простой скрипт, +Например, вы можете создать в +/usr/lib//+ простой скрипт, который включает соответствующие файлы, а затем запускает бинарник демона через +exec+. После чего достаточно просто указать этот скрипт в опции +ExecStart=+ вместо бинарника демона. @@ -3132,7 +3137,7 @@ URI, ссылающиеся на документацию, формируютс Да, кстати: если вас интересует общий обзор процесса загрузки systemd, то вам стоит обратить внимание на \href{http://www.freedesktop.org/software/systemd/man/bootup.html}{новую -страницу руководства}, где представлена псевгдорафическая потоковая диаграмма, +страницу руководства}, где представлена псевдографическая потоковая диаграмма, описывающая процесс загрузки и роль ключевых юнитов. \section{Сторожевые таймеры} @@ -3628,7 +3633,10 @@ Journal был включен в Fedora начиная с F17. В Fedora~18 jour большинства лог-файлов. При этом авторы четко разделяют полномочия групп +adm+ и +wheel+: если последняя используется для предоставления прав \emph{изменять} что-либо в системе, то первая дает возможность лишь \emph{просматривать} -системную информацию.}: +системную информацию. Начиная с версии systemd 198, группа-владелец файлов +журнала изменена с +adm+ на +systemd-journal+, однако штатный алгоритм установки +systemd все равно выдает права на их чтение группам +adm+ и +wheel+ (через +ACL).}: \begin{Verbatim} $ journalctl \end{Verbatim} @@ -3804,7 +3812,7 @@ $ journalctl -F _SYSTEMD_UNIT однако, начиная с релиза systemd 196, аналогичная функциональность доступна и для zsh.}! Это же просто прекрасно~--- вы можете просмотреть перечень значений поля и выбрать из него нужно прямо при вводе выражения. Возьмем для примера -метки SELinux. Помнится, имя поле начиналось с букв SE\ldots{} +метки SELinux. Помнится, имя поля начиналось с букв SE\ldots{} \begin{Verbatim}[commandchars=\\\{\}] $ journalctl _SE\textbf{} \end{Verbatim} @@ -3956,18 +3964,32 @@ CPUShares=1500 \end{Verbatim} Первая строка обеспечивает включение в нашу конфигурацию файла с настройками по умолчанию, сделанными разработчиками Apache или его сопровождающими в вашем -дистрибутиве (если это включение не~указать явно, данный файл будет проигнорирован). -Далее, мы указываем тот параметр, который хотим изменить. Сохраняем файл, -приказываем systemd перечитать конфигурацию, и перезапускаем Apache, чтобы -настройки вступили в силу\footnote{Прим. перев.: systemd версий до 197 -включительно, не~поддерживает изменение параметров контрольных групп без -перезапуска службы. Но вы можете узнать контрольную группу службы командой -наподобие +systemctl show -p ControlGroup avahi-daemon.service+, и выполнить -настройки любым удобным для вас способом, например, через запись значений в -псевдофайлы cgroupfs (разумеется, при следующем запуске службы к ней будут -применены параметры, указанные в конфигурационном файле). Начиная с systemd 198, -в программу +systemctl+ добавлена поддержка команд +set-cgroup-attr+, -+unset-cgroup-attr+ и +get-cgroup-attr+.}: +дистрибутиве (если это включение не~указать явно, данный файл будет +проигнорирован). Далее, мы указываем тот параметр, который хотим +изменить\footnote{Прим. перев.: В новых версиях systemd, начиная со 198, можно +поступить проще: вместо того, чтобы создавать свой юнит-файл в каталоге +/etc+ и +включать в него содержимое штатного (из +/usr+), достаточно просто создать +каталог +/etc/systemd/system/httpd.service.d/+ и поместить в него файл ++my_resource_limit.conf+ (суффикс +.conf+ обязателен), в котором указываются +только те настройки, которые необходимо изменить (последние две строки +вышеприведенного листинга). Это никак не~отменяет основного конфигурационного +файла юнита (который может находиться в +/usr+ или +/etc+), однако настройки из ++.d+-каталогов имеют более высокий приоритет и могут перекрывать настройки +основного файла. Все вышесказанное относится и к другим примерам из этого +раздела.}. Сохраняем файл, приказываем systemd перечитать конфигурацию, и +перезапускаем Apache, чтобы настройки вступили в силу\footnote{Прим. перев.: +systemd версий до 197 включительно, не~поддерживает изменение параметров +контрольных групп без перезапуска службы. Но вы можете узнать контрольную группу +службы командой наподобие +systemctl show -p ControlGroup avahi-daemon.service+, +и выполнить настройки любым удобным для вас способом, например, через запись +значений в псевдофайлы cgroupfs (разумеется, при следующем запуске службы к ней +будут применены параметры, указанные в конфигурационном файле). Начиная с +systemd 198, в программу +systemctl+ добавлена поддержка команд ++set-cgroup-attr+, +unset-cgroup-attr+ и +get-cgroup-attr+, позволяющих +манипулировать практически всеми параметрами контрольных групп. При этом +поддерживается сохранение установленных таким образом параметров в виде +вспомогательных конфигурационных файлов в +.d+-каталогах (см. примечание +выше).}: \begin{Verbatim} systemctl daemon-reload systemctl restart httpd.service @@ -4242,7 +4264,7 @@ fi \end{Verbatim} Эта утилита возвращает код 0 (успех), обнаружив виртуализацию, или ненулевое -значение, если виртуализация не~выявлена. Кроме того, она выводит идентификатор +значение, если виртуализация не~выявлена. Также она выводит идентификатор обнаруженной системы виртуализации (согласно списку выше), если это не~было запрещено опцией +-q+. Кроме того, опции +-c+ и +-v+ позволяют ограничить проверки только механизмами виртуализации на уровне ОС, либо полной @@ -4343,8 +4365,8 @@ systemd в промышленных серверных платформах, м Подобные конфигурации уже используются на рабочих серверах ряда компаний. В частности, специалисты из \href{https://www.getpantheon.com/}{Pantheon} используют такую схему для обслуживания масштабируемой инфраструктуры множества -сайтов на базе Drupal. (Стоит упомянуть, что заслуга ее внедрения в Pantheon -принадлежит Дэвиду Штрауссу. Дэвид, ты крут!) +сайтов на базе Drupal. (Стоит упомянуть, что заслуга ее внедрения в компании +Pantheon принадлежит Дэвиду Штрауссу. Дэвид, ты крут!) \subsection{Сокет-активация контейнеров} @@ -4527,13 +4549,10 @@ systemd начнет прослушивать TCP-порт 23. При подкл классические inetd-службы, кроме встроенных) или systemd (зависят от библиотеки +libsystemd-daemon.so+, либо содержат в исходниках заголовочный файл +sd-daemon.h+). Службы, которые сами открывают себе слушающий сокет и -не~содержат кода для приема уже открытого сокета, так активировать нельзя. -Точнее, в случае с сетевыми и файловыми сокетами, все-таки можно, но первое -соединение/сообщение при этом будет <<потрачено>> на запуск контейнера, и до -службы в итоге дойдут только последующие, начина со второго, что сводит выгоды -практически к нулю.}, а те сокеты, которые будут настроены для прослушивания -внутри контейнера, но не~получены от хоста, будут активированы и доступны -изнутри контейнера (а если это сетевые или файловые unix-сокеты, то и извне). +не~содержат кода для приема уже открытого сокета, так активировать нельзя.}, а +те сокеты, которые будут настроены для прослушивания внутри контейнера, но +не~получены от хоста, будут активированы и доступны изнутри контейнера (а если +это сетевые или файловые unix-сокеты, то и извне). Итак, давайте отступим чуть назад и полюбуемся на результаты наших трудов. Что мы получили в итоге? Возможность настраивать на одном хосте множество