Version v15.8 (2014-03-03 17:31) [AUTO]

This commit is contained in:
nnz1024
2014-03-03 17:31:00 +04:00
parent 84177721df
commit 7de2397a9b

198
s4a.tex
View File

@@ -641,8 +641,8 @@ service-файл будет работать в любом дистрибути
вам отправить этот файл разработчикам. Вопросы по полноценной интеграции вам отправить этот файл разработчикам. Вопросы по полноценной интеграции
демонов с systemd, с максимальным использованием всех его возможностей, будут демонов с systemd, с максимальным использованием всех его возможностей, будут
рассмотрены в последующих статьях этого цикла, пока же ограничимся ссылкой на рассмотрены в последующих статьях этого цикла, пока же ограничимся ссылкой на
\href{http://0pointer.de/public/systemd-man/daemon.html}{страницу} официальной \href{http://www.freedesktop.org/software/systemd/man/daemon.html}{страницу}
документации. официальной документации.
Итак, приступим. В качестве примера возьмем init-скрипт демона ABRT (Automatic Итак, приступим. В качестве примера возьмем init-скрипт демона ABRT (Automatic
Bug Reporting Tool, службы, занимающейся сбором crash dump'ов). Исходный Bug Reporting Tool, службы, занимающейся сбором crash dump'ов). Исходный
@@ -751,9 +751,9 @@ WantedBy=multi-user.target
лога, независимо от используемой программы (например, rsyslog или syslog-ng) лога, независимо от используемой программы (например, rsyslog или syslog-ng)
и типа активации (как обычной службы или через log-сокет). Подробнее о таких и типа активации (как обычной службы или через log-сокет). Подробнее о таких
специальных юнитах можно почитать специальных юнитах можно почитать
\href{http://0pointer.de/public/systemd-man/systemd.special.html}{страницу} \href{http://www.freedesktop.org/software/systemd/man/systemd.special.html}%
официальной документации. Обратите внимание, что директива +After+, в {страницу} официальной документации. Обратите внимание, что директива +After+,
отсутствие директивы +Requires+, задает лишь порядок загрузки, но в отсутствие директивы +Requires+, задает лишь порядок загрузки, но
не~задает жесткой зависимости. То есть, если при загрузке конфигурация не~задает жесткой зависимости. То есть, если при загрузке конфигурация
systemd будет предписывать запуск как демона системного лога, так и abrtd, то systemd будет предписывать запуск как демона системного лога, так и abrtd, то
сначала будет запущен демон системного лога, и только потом abrtd. Если же сначала будет запущен демон системного лога, и только потом abrtd. Если же
@@ -874,11 +874,11 @@ systemd располагает удобным методом для опреде
За более подробным описанием всех опций настройки, вы можете обратиться к За более подробным описанием всех опций настройки, вы можете обратиться к
страницам руководства страницам руководства
\href{http://0pointer.de/public/systemd-man/systemd.unit.html}{systemd.unit}, \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}{systemd.unit},
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{systemd.service}, \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}{systemd.service},
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec}. Полный \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec}.
список доступных страниц можно просмотреть Полный список доступных страниц можно просмотреть
\href{http://0pointer.de/public/systemd-man/}{здесь}. \href{http://www.freedesktop.org/software/systemd/man/}{здесь}.
Конечно, отнюдь не~все init-скрипты так же легко преобразовать в Конечно, отнюдь не~все init-скрипты так же легко преобразовать в
service-файлы. Но, к счастью, <<проблемных>> скриптов не~так уж и много. service-файлы. Но, к счастью, <<проблемных>> скриптов не~так уж и много.
@@ -940,7 +940,10 @@ Apache, crond, atd, которые по роду служебной деятел
лишь возможности исчерпания памяти и идентификаторов процессов (PID). Впрочем, и лишь возможности исчерпания памяти и идентификаторов процессов (PID). Впрочем, и
их тоже можно легко устранить: достаточно задать соответствующие лимиты в их тоже можно легко устранить: достаточно задать соответствующие лимиты в
конфигурационном файле службы (см. конфигурационном файле службы (см.
\href{http://www.0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}).}. \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
{systemd.exec(5)} и
\href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
{systemd.resource-control(5)}).}.
В некоторых случаях возникает необходимость отправить сигнал именно основному В некоторых случаях возникает необходимость отправить сигнал именно основному
процессу службы. Например, используя +SIGHUP+, мы можем заставить демона процессу службы. Например, используя +SIGHUP+, мы можем заставить демона
@@ -1241,8 +1244,8 @@ RootDirectoryStartOnly=yes
доступ к иерархии файловых систем ОС (иначе наш скрипт просто не~сможет доступ к иерархии файловых систем ОС (иначе наш скрипт просто не~сможет
выполнить bind-монтирование нужных каталогов). Более подробную информацию по выполнить bind-монтирование нужных каталогов). Более подробную информацию по
опциям конфигурации вы можете получить на опциям конфигурации вы можете получить на
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{страницах} \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}{страницах}
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{руководства}. \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{руководства}.
Поместив приведенный выше текст примера в файл Поместив приведенный выше текст примера в файл
+/etc/systemd/system/foobar.service+, вы сможете запустить chroot'нутого демона +/etc/systemd/system/foobar.service+, вы сможете запустить chroot'нутого демона
@@ -1276,8 +1279,8 @@ InaccessibleDirectories=/home
единственным исключением~--- она не~будет видеть каталог +/home+, что позволит единственным исключением~--- она не~будет видеть каталог +/home+, что позволит
защитить данные пользователей от потенциальных хакеров. (Подробнее об этих защитить данные пользователей от потенциальных хакеров. (Подробнее об этих
опциях можно почитать на опциях можно почитать на
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{странице \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
руководства}.) {странице руководства}.)
Фактически, FSNS по множеству параметров превосходят +chroot()+. Скорее всего, Фактически, FSNS по множеству параметров превосходят +chroot()+. Скорее всего,
Avahi и RealtimeKit в ближайшем будущем перейдут от +chroot()+ к использованию Avahi и RealtimeKit в ближайшем будущем перейдут от +chroot()+ к использованию
@@ -1327,7 +1330,7 @@ debootstrap/febootstrap. В этом случае возможности +system
взаимодействия с процессом init.}. взаимодействия с процессом init.}.
Однако, куда более интересные возможности предоставляет программа Однако, куда более интересные возможности предоставляет программа
\href{http://0pointer.de/public/systemd-man/systemd-nspawn.html}{systemd-nspawn}, \href{http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html}{systemd-nspawn},
входящая в стандартный комплект поставки systemd. По сути, это улучшенный аналог входящая в стандартный комплект поставки systemd. По сути, это улучшенный аналог
+chroot(1)+~--- она не~только подменяет корневой каталог, но и создает отдельные +chroot(1)+~--- она не~только подменяет корневой каталог, но и создает отдельные
пространства имен для дерева файловых систем (FSNS) и для идентификаторов пространства имен для дерева файловых систем (FSNS) и для идентификаторов
@@ -1635,7 +1638,12 @@ $ eog plot.svg
Она создает наглядные диаграммы, показывающие моменты запуска служб и время, Она создает наглядные диаграммы, показывающие моменты запуска служб и время,
затраченное на их запуск, по отношению к другим службам. На текущий момент, она затраченное на их запуск, по отношению к другим службам. На текущий момент, она
не~показывает явно, кто кого ожидает, но догадаться обычно несложно. не~показывает явно, кто кого ожидает, но догадаться обычно
несложно\footnote{Прим. перев.: Начиная с systemd 203, добавлена поддержка
специальной команды +systemd-analyze critical-chain+, которая выводит самую
медленную цепочку юнитов (цепь в графе зависимостей, формируемом при
загрузке). Время запуска всех юнитов в этой цепочке определяет итоговое время
загрузки системы.}.
Чтобы продемонстрировать эффект, порожденный двумя нашими оптимизациями, Чтобы продемонстрировать эффект, порожденный двумя нашими оптимизациями,
приведем ссылки на соответствующие графики: приведем ссылки на соответствующие графики:
@@ -1755,20 +1763,24 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
всех дистрибутивах: всех дистрибутивах:
\begin{itemize} \begin{itemize}
\item \item
\hreftt{http://0pointer.de/public/systemd-man/hostname.html}{/etc/hostname}: \hreftt{http://www.freedesktop.org/software/systemd/man/hostname.html}%
{/etc/hostname}:
имя хоста для данной системы. Одна из наиболее простых и важных имя хоста для данной системы. Одна из наиболее простых и важных
системных настроек. В разных дистрибутивах оно настраивалось системных настроек. В разных дистрибутивах оно настраивалось
по-разному: Fedora использовала +/etc/sysconfig/network+, по-разному: Fedora использовала +/etc/sysconfig/network+,
OpenSUSE~--- +/etc/HOSTNAME+, Debian~--- +/etc/hostname+. Мы OpenSUSE~--- +/etc/HOSTNAME+, Debian~--- +/etc/hostname+. Мы
остановились на варианте, предложенном Debian. остановились на варианте, предложенном Debian.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/vconsole.conf.html}{/etc/vconsole.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/vconsole.conf.html}%
{/etc/vconsole.conf}:
конфигурация раскладки клавиатуры и шрифта для консоли. конфигурация раскладки клавиатуры и шрифта для консоли.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/locale.conf.html}{/etc/locale.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/locale.conf.html}%
{/etc/locale.conf}:
конфигурация общесистемной локали. конфигурация общесистемной локали.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/modules-load.d.html}{/etc/modules-load.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/modules-load.d.html}%
{/etc/modules-load.d/*.conf}:
каталог\footnote{Прим. перев.: Для описания этого и трех каталог\footnote{Прим. перев.: Для описания этого и трех
последующих каталогов автор пользуется термином <<drop-in последующих каталогов автор пользуется термином <<drop-in
directory>>. Данный термин означает каталог, в который можно directory>>. Данный термин означает каталог, в который можно
@@ -1785,21 +1797,25 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
ядра, которые нужно принудительно подгрузить при загрузке ядра, которые нужно принудительно подгрузить при загрузке
(впрочем, необходимость в этом возникает достаточно редко). (впрочем, необходимость в этом возникает достаточно редко).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/sysctl.d.html}{/etc/sysctl.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/sysctl.d.html}%
{/etc/sysctl.d/*.conf}:
каталог для задания параметров ядра (+sysctl+). Дополняет каталог для задания параметров ядра (+sysctl+). Дополняет
классический конфигурационный файл +/etc/sysctl.conf+. классический конфигурационный файл +/etc/sysctl.conf+.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/tmpfiles.d.html}{/etc/tmpfiles.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html}%
{/etc/tmpfiles.d/*.conf}:
каталог для управления настройками временных файлов (systemd каталог для управления настройками временных файлов (systemd
обеспечивает создание, очистку и удаление временных файлов и обеспечивает создание, очистку и удаление временных файлов и
каталогов, как во время загрузки, так и во время работы каталогов, как во время загрузки, так и во время работы
системы). системы).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/binfmt.d.html}{/etc/binfmt.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/binfmt.d.html}%
{/etc/binfmt.d/*.conf}:
каталог для регистрации дополнительных бинарных форматов каталог для регистрации дополнительных бинарных форматов
(например, форматов Java, Mono, WINE). (например, форматов Java, Mono, WINE).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/os-release.html}{/etc/os-release}: \hreftt{http://www.freedesktop.org/software/systemd/man/os-release.html}%
{/etc/os-release}:
стандарт для файла, обеспечивающего идентификацию дистрибутива и стандарт для файла, обеспечивающего идентификацию дистрибутива и
его версии. Сейчас различные дистрибутивы используют для этого его версии. Сейчас различные дистрибутивы используют для этого
разные файлы (например, +/etc/fedora-release+ в Fedora), и разные файлы (например, +/etc/fedora-release+ в Fedora), и
@@ -1813,7 +1829,8 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
сложившуюся ситуацию, мы решили перейти к единому простому сложившуюся ситуацию, мы решили перейти к единому простому
формату представления этой информации. формату представления этой информации.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/machine-id.html}{/etc/machine-id}: \hreftt{http://www.freedesktop.org/software/systemd/man/machine-id.html}%
{/etc/machine-id}:
файл с идентификатором данного компьютера (перекрывает файл с идентификатором данного компьютера (перекрывает
аналогичный идентификатор D-Bus). Гарантируется, что в любой аналогичный идентификатор D-Bus). Гарантируется, что в любой
системе, использующей systemd, этот файл будет существовать и системе, использующей systemd, этот файл будет существовать и
@@ -1822,7 +1839,8 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
D-Bus, чтобы упростить решение множества задач, требующих D-Bus, чтобы упростить решение множества задач, требующих
наличия уникального и постоянного идентификатора компьютера. наличия уникального и постоянного идентификатора компьютера.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/machine-info.html}{/etc/machine-info}: \hreftt{http://www.freedesktop.org/software/systemd/man/machine-info.html}%
{/etc/machine-info}:
новый конфигурационный файл, хранящий информации о полном новый конфигурационный файл, хранящий информации о полном
(описательном) имени хоста (например, <<Компьютер Леннарта>>) и (описательном) имени хоста (например, <<Компьютер Леннарта>>) и
значке, которым он будет обозначаться в графических оболочках, значке, которым он будет обозначаться в графических оболочках,
@@ -2094,8 +2112,9 @@ systemd?
быть подгружен автоматически, все равно существует гораздо более быть подгружен автоматически, все равно существует гораздо более
удобные методы указать его принудительную подгрузку~--- удобные методы указать его принудительную подгрузку~---
например, путем создания соответствующего файла в каталоге например, путем создания соответствующего файла в каталоге
\hreftt{http://0pointer.de/public/systemd-man/modules-load.d.html}{/etc/modules-load.d/} \hreftt{http://www.freedesktop.org/software/systemd/man/modules-load.d.html}%
(стандартный метод настройки принудительной подгрузки модулей). {/etc/modules-load.d/} (стандартный метод настройки
принудительной подгрузки модулей).
\item И наконец, хотелось бы отметить, что каталог +/etc+ определен как \item И наконец, хотелось бы отметить, что каталог +/etc+ определен как
место для хранения системных настроек (<<Host-specific system место для хранения системных настроек (<<Host-specific system
configuration>>, согласно FHS). Наличие внутри него подкаталога configuration>>, согласно FHS). Наличие внутри него подкаталога
@@ -2115,9 +2134,10 @@ systemd?
штатно поддерживаются systemd, нет никакого смысла дублировать штатно поддерживаются systemd, нет никакого смысла дублировать
их где-то еще (перечень опций, которые можно задать для любой их где-то еще (перечень опций, которые можно задать для любой
службы, приведен на страницах справки службы, приведен на страницах справки
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)} \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
и {systemd.exec(5)} и
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{systemd.service(5)}.) \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}%
{systemd.service(5)}.)
Если же ваша настройка просто добавляет еще один уровень Если же ваша настройка просто добавляет еще один уровень
отключения запуска службы~--- не~плодите лишние сущности, отключения запуска службы~--- не~плодите лишние сущности,
откажитесь от нее. откажитесь от нее.
@@ -2140,7 +2160,7 @@ systemd?
штатные unit-файлы systemd. Если ваш файл из +sysconfig+ содержит лишь штатные unit-файлы systemd. Если ваш файл из +sysconfig+ содержит лишь
определения переменных, можно воспользоваться опцией определения переменных, можно воспользоваться опцией
+EnvironmentFile=-/etc/sysconfig/foobar+ (подробнее об этой опции см. +EnvironmentFile=-/etc/sysconfig/foobar+ (подробнее об этой опции см.
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}), \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec(5)}),
позволяющей прочитать из файла набор переменных окружения, который будет позволяющей прочитать из файла набор переменных окружения, который будет
установлен при запуске службы. Если же для задания настроек вам необходим установлен при запуске службы. Если же для задания настроек вам необходим
полноценный язык программирования~--- ничто не~мешает им воспользоваться. полноценный язык программирования~--- ничто не~мешает им воспользоваться.
@@ -2179,16 +2199,18 @@ systemd?
+/lib/systemd/system+ (а также, возможно, и в других\footnote{Прим. перев.: +/lib/systemd/system+ (а также, возможно, и в других\footnote{Прим. перев.:
Перечень каталогов, в которых выполняется поиск общесистемных юнит-файлов, Перечень каталогов, в которых выполняется поиск общесистемных юнит-файлов,
приведен на странице руководства приведен на странице руководства
\href{http://www.0pointer.de/public/systemd-man/systemd.html}{systemd(1)} \href{http://www.freedesktop.org/software/systemd/man/systemd.html}{systemd(1)}
(раздел <<System unit directories>>). Указанные выше каталоги (раздел <<System unit directories>>). Указанные выше каталоги
+/etc/systemd/systemd+ и +/lib/systemd/system+ соответствуют значениям по +/etc/systemd/systemd+ и +/lib/systemd/system+ соответствуют значениям по
умолчанию для упомянутых там переменных pkg-config +systemdsystemconfdir+ и умолчанию для упомянутых там переменных pkg-config +systemdsystemconfdir+ и
+systemdsystemunitdir+ соответственно.}). Для служб, работающих в нескольких +systemdsystemunitdir+ соответственно. Начиная с systemd версии 198, данный
экземплярах, эта схема становится немного сложнее: перечень, в более точной и развернутой форме, присутствует на странице
\emph{foobar}+@+\emph{quux}+.service+, где \emph{foobar}~--- имя службы, общее \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}%
для всех экземпляров, а \emph{quux}~--- идентификатор конкретного экземпляра. {systemd.unit(5)}.}). Для служб, работающих в нескольких экземплярах, эта схема
Например, +serial-gett@ttyS2.service+~--- это служба getty для COM-порта, становится немного сложнее: \emph{foobar}+@+\emph{quux}+.service+, где
запущенная на +ttyS2+. \emph{foobar}~--- имя службы, общее для всех экземпляров, а \emph{quux}~---
идентификатор конкретного экземпляра. Например, +serial-gett@ttyS2.service+~---
это служба getty для COM-порта, запущенная на +ttyS2+.
При необходимости, экземпляры служб можно легко создать динамически. Скажем, вы При необходимости, экземпляры служб можно легко создать динамически. Скажем, вы
можете, безо всяких дополнительных настроек, запустить новый экземпляр getty на можете, безо всяких дополнительных настроек, запустить новый экземпляр getty на
@@ -2324,9 +2346,9 @@ serial-getty@serial-by\x2dpath-pci\x2d0000:00:1d.0\x2dusb\x2d0:1.4:1.1\x2dport0.
(Небольшое замечание: помимо +%i+ и +%I+, существует еще несколько (Небольшое замечание: помимо +%i+ и +%I+, существует еще несколько
спецификаторов, и большинство из них доступно и в обычных файлах конфигурации спецификаторов, и большинство из них доступно и в обычных файлах конфигурации
юнитов, а не~только в шаблонах. Подробности можно посмотреть на юнитов, а не~только в шаблонах. Подробности можно посмотреть на
\href{http://0pointer.de/public/systemd-man/systemd.unit.html}{странице \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}%
руководства}, содержащей полный перечень этих спецификаторов с краткими {странице руководства}, содержащей полный перечень этих спецификаторов с
пояснениями.) краткими пояснениями.)
\section{Службы с активацией в стиле inetd} \section{Службы с активацией в стиле inetd}
\label{sec:inetd} \label{sec:inetd}
@@ -2369,7 +2391,8 @@ systemd прежде всего ориентирована на локальны
быть использован службами для обеспечения сокет-активации. В основе этого быть использован службами для обеспечения сокет-активации. В основе этого
\href{http://0pointer.de/blog/projects/socket-activation.html}{простого и \href{http://0pointer.de/blog/projects/socket-activation.html}{простого и
минималистичного} механизма лежит функция минималистичного} механизма лежит функция
\hreftt{http://0pointer.de/public/systemd-man/sd_listen_fds.html}{sd\_listen\_fds()}. \hreftt{http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html}%
{sd\_listen\_fds()}.
Однако, интерфейс, традиционно используемый в inetd, еще проще. Он позволяет Однако, интерфейс, традиционно используемый в inetd, еще проще. Он позволяет
передавать запускаемой службе только один сокет, который формируется из потоков передавать запускаемой службе только один сокет, который формируется из потоков
STDIN и STDOUT запущенного процесса. Поддержка этого механизма также STDIN и STDOUT запущенного процесса. Поддержка этого механизма также
@@ -2506,17 +2529,17 @@ StandardInput=socket
собственно, и включает для данной службы режим совместимости с inetd-активацией. собственно, и включает для данной службы режим совместимости с inetd-активацией.
Опция +StandardInput=+ позволяет указать, куда будет подключен поток STDIN Опция +StandardInput=+ позволяет указать, куда будет подключен поток STDIN
процесса данной службы (подробности см. процесса данной службы (подробности см.
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{на странице \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
руководства}). Задав для нее значение +socket+, мы обеспечиваем подключение {на странице руководства}). Задав для нее значение +socket+, мы обеспечиваем
этого потока к сокету соединения, как того и требует механизм inetd-активации. подключение этого потока к сокету соединения, как того и требует механизм
Заметим, что явно указывать опцию +StandardOutput=+ в данном случае inetd-активации. Заметим, что явно указывать опцию +StandardOutput=+ в данном
необязательно~--- она автоматически устанавливается в то же значение, что и случае необязательно~--- она автоматически устанавливается в то же значение, что
+StandardInput+, если явно не~указано что-то другое. Кроме того, можно отметить и +StandardInput+, если явно не~указано что-то другое. Кроме того, можно
наличие <<+-+>> перед именем бинарного файла sshd. Таким образом мы указываем отметить наличие <<+-+>> перед именем бинарного файла sshd. Таким образом мы
systemd игнорировать код выхода процесса sshd. По умолчанию, systemd сохраняет указываем systemd игнорировать код выхода процесса sshd. По умолчанию, systemd
коды выхода для всех экземпляров службы, завершившихся с ошибкой (сбросить эту сохраняет коды выхода для всех экземпляров службы, завершившихся с ошибкой
информацию можно командой +systemctl reset-failed+). SSH (сбросить эту информацию можно командой +systemctl reset-failed+). SSH довольно
довольно часто завершается с ненулевым кодом выхода, и мы разрешаем systemd часто завершается с ненулевым кодом выхода, и мы разрешаем systemd
не~регистрировать подобные <<ошибки>>. не~регистрировать подобные <<ошибки>>.
Служба +sshd@.service+ предназначена для работы в виде независимых экземпляров Служба +sshd@.service+ предназначена для работы в виде независимых экземпляров
@@ -2616,15 +2639,15 @@ Linux подсистема ipset гораздо лучше подходит дл
стороны, systemd тоже предоставляет ряд возможностей, отсутствующих в xinetd, в стороны, systemd тоже предоставляет ряд возможностей, отсутствующих в xinetd, в
частности, индивидуальный контроль над каждым экземпляром службы (см. выше), и частности, индивидуальный контроль над каждым экземпляром службы (см. выше), и
внушительный внушительный
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{набор настроек} \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{набор
для контроля окружения, в котором запускаются экземпляры. Я надеюсь, что настроек} для контроля окружения, в котором запускаются экземпляры. Я надеюсь,
возможностей systemd должно быть достаточно для решения большинства задач, а в что возможностей systemd должно быть достаточно для решения большинства задач, а
тех редких случаях, когда вам потребуются специфические опции xinetd~--- ничто в тех редких случаях, когда вам потребуются специфические опции xinetd~--- ничто
не~мешает вам запустить его в дополнение к systemd. Таким образом, уже сейчас в не~мешает вам запустить его в дополнение к systemd. Таким образом, уже сейчас в
большинстве случаев xinetd можно выкинуть из числа обязательных системных большинстве случаев xinetd можно выкинуть из числа обязательных системных
компонентов. Можно сказать, что systemd не~просто возвращает функциональность компонентов. Можно сказать, что systemd не~просто возвращает функциональность
классического юниксового inetd, но еще и восстанавливает ее ключевую классического юниксового inetd, но еще и восстанавливает ее ключевую роль в
роль в Linux-системах. Linux-системах.
Теперь, вооруженные этими знаниями, вы можете портировать свои службы с inetd на Теперь, вооруженные этими знаниями, вы можете портировать свои службы с inetd на
systemd. Но, конечно, будет лучше, если этим займутся разработчики из апстрима systemd. Но, конечно, будет лучше, если этим займутся разработчики из апстрима
@@ -2675,11 +2698,14 @@ systemd 187.}:
\end{itemize} \end{itemize}
Все эти опции описаны в man-страницах systemd, главным образом, в Все эти опции описаны в man-страницах systemd, главным образом, в
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}% \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec(5)}%
\footnote{Прим. перев.: Начиная с systemd версии 206, значительная часть \footnote{Прим. перев.: Начиная с systemd версии 206, значительная часть
обсуждаемых здесь настроек вынесена в отдельную страницу обсуждаемых здесь настроек вынесена на отдельную страницу
\href{http://0pointer.de/public/systemd-man/systemd.cgroup.html}{systemd.cgroup(5)}% \href{http://www.freedesktop.org/software/systemd/man/systemd.cgroup.html}%
.}. Если вам потребуется дополнительная информация, вы можете обратиться к ним. {systemd.cgroup(5)}. Начиная с systemd 207, эта страница переименована в
\href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
{systemd.resource-control(5)}.}. Если вам потребуется дополнительная информация,
вы можете обратиться к ним.
Все эти опции доступны на системах с systemd, вне зависимости от использования Все эти опции доступны на системах с systemd, вне зависимости от использования
SELinux или любой другой реализации MAC. SELinux или любой другой реализации MAC.
@@ -3966,16 +3992,16 @@ systemd предоставляет ряд высокоуровневых нас
несколькими рабочими процессами получит такую же долю процессорного времени, несколькими рабочими процессами получит такую же долю процессорного времени,
как и Apache, даже если тот запустил 1000 CGI-процессов. Разумеется, такое как и Apache, даже если тот запустил 1000 CGI-процессов. Разумеется, такое
поведение при необходимости можно легко отключить~--- см. опцию поведение при необходимости можно легко отключить~--- см. опцию
\hreftt{http://0pointer.de/public/systemd-man/systemd.conf.html}{DefaultControllers=} \hreftt{http://www.freedesktop.org/software/systemd/man/systemd-system.conf.html}%
в файле +/etc/systemd/system.conf+. {DefaultControllers=} в файле +/etc/systemd/system.conf+.
Если \emph{равномерное} распределение процессорного времени между службами вас Если \emph{равномерное} распределение процессорного времени между службами вас
не~устраивает, и вы хотите выделить определенным службам больше или меньше не~устраивает, и вы хотите выделить определенным службам больше или меньше
времени~--- используйте опцию времени~--- используйте опцию
\hreftt{http://0pointer.de/public/systemd-man/systemd.exec.html}{CPUShares=} в \hreftt{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
конфигурационном файле службы. По умолчанию это значение равно 1024. Увеличивая {CPUShares=} в конфигурационном файле службы. По умолчанию это значение равно
это число, вы даете службе больше процессорного времени, уменьшая~--- 1024. Увеличивая это число, вы даете службе больше процессорного времени,
соответственно, меньше. уменьшая~--- соответственно, меньше.
Рассмотрим небольшой практический пример. Допустим, вам нужно увеличить Рассмотрим небольшой практический пример. Допустим, вам нужно увеличить
для службы Apache относительную долю потребления процессора до 1500. Для этого для службы Apache относительную долю потребления процессора до 1500. Для этого
@@ -4061,8 +4087,12 @@ systemd создавать соответствующие группы, доба
Второй из этих пределов превышать нельзя, независимо от наличия свободной Второй из этих пределов превышать нельзя, независимо от наличия свободной
памяти. Подробнее см. раздел <<Soft limits>> в памяти. Подробнее см. раздел <<Soft limits>> в
\href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{файле \href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{файле
документации}.}. При этом поддерживаются суффиксы K, M, G и T, обозначающие документации}. Отметим, что из-за планируемого прекращения поддержки параметра
соответственно, килобайт, мегабайт, гигабайт и терабайт (по основанию 1024). +memory.soft_limit_in_bytes+ на уровне ядра, опция +MemorySoftLimit=+ была
\href{http://cgit.freedesktop.org/systemd/systemd/commit/?id=ddca82aca08712a302cfabdbe59f73ee9ed3f73a}%
{удалена} из systemd начиная с версии 207.}. При этом поддерживаются суффиксы K,
M, G и T, обозначающие соответственно, килобайт, мегабайт, гигабайт и терабайт
(по основанию 1024).
\begin{Verbatim} \begin{Verbatim}
.include /usr/lib/systemd/system/httpd.service .include /usr/lib/systemd/system/httpd.service
@@ -4150,7 +4180,16 @@ BlockIOReadBandwith=/var/log 5M
присутствовал в systemd до 204 версии включительно. Начиная с версии 205, он был присутствовал в systemd до 204 версии включительно. Начиная с версии 205, он был
удален по требованию разработчиков cgroups. Также были удалены возможности удален по требованию разработчиков cgroups. Также были удалены возможности
напрямую задавать для юнита контрольную группу (+ControlGroup=+) и устанавливать напрямую задавать для юнита контрольную группу (+ControlGroup=+) и устанавливать
права доступа для управления группами (+ControlGroupModify=+).}. Рассмотрим, права доступа для управления группами (+ControlGroupModify=+). Взамен,
разработчики systemd планируют значительно расширить поддержку высокоуровневых
настроек для параметров cgroups~--- сразу после того, как разработчики
cgroups определятся, какие именно параметры они будут поддерживать. Наличие
некоторого хаоса в этой области обусловлено происходящей сейчас полной
переработкой реализации контрольных групп на уровне ядра и механизмов работы с
ними из пространства пользователя. Техническая сторона данного вопроса раскрыта
в статье
\href{http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface}%
{The New Control Group Interfaces} (пока не~переведена).}. Рассмотрим,
например, задание для службы параметра \emph{swappiness} (относительная например, задание для службы параметра \emph{swappiness} (относительная
интенсивность использования подкачки для процессов службы). В systemd нет интенсивность использования подкачки для процессов службы). В systemd нет
высокоуровневой настройки для этого значения. Однако вы можете задать его, высокоуровневой настройки для этого значения. Однако вы можете задать его,
@@ -4182,8 +4221,8 @@ ControlGroupAttribute=memory.swappiness 70
Для углубленного изучения темы, затронутой в этой статье, вы можете обратиться к Для углубленного изучения темы, затронутой в этой статье, вы можете обратиться к
документации по документации по
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{поддерживаемым \href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
настройкам юнитов}, а также по контроллерам {поддерживаемым настройкам юнитов}, а также по контроллерам
\href{http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt}{cpu}, \href{http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt}{cpu},
\href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{memory} и \href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{memory} и
\href{http://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt}{blkio}. \href{http://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt}{blkio}.
@@ -5232,7 +5271,8 @@ dmesg > dmesg.txt
systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M
\end{Verbatim} \end{Verbatim}
\item Файл +systemd-dump.txt+, полученный в результате выполнения \item Файл +systemd-dump.txt+, полученный в результате выполнения
команды команды\footnote{Прим. перев.: Начиная с systemd версии 207,
вместо +systemctl dump+ нужно вызывать +systemd-analyze dump+.}
\begin{Verbatim} \begin{Verbatim}
systemctl dump > systemd-dump.txt systemctl dump > systemd-dump.txt
\end{Verbatim} \end{Verbatim}
@@ -5381,7 +5421,7 @@ API для скриптов. Тем не~менее, существует ряд
\section{Предсказуемые имена сетевых интерфейсов\sfnote{Перевод статьи \section{Предсказуемые имена сетевых интерфейсов\sfnote{Перевод статьи
<<\href{http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames}% <<\href{http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames}%
{Predictable Network Interface Names}>> с официального сайта проекта, по {Predictable Network Interface Names}>> с официального сайта проекта, по
состоянию на 2013-05-22 08:55:30 (коммит dc0a2).}} состоянию на 2013-09-10 01:52:06 (коммит c0524).}}
Начиная с версии 197, systemd/udev присваивает сетевым интерфейсам (Ethernet, Начиная с версии 197, systemd/udev присваивает сетевым интерфейсам (Ethernet,
WLAN, WWAN\footnote{Прим. перев.: WWAN (Wireless Wide Area Network)~--- WLAN, WWAN\footnote{Прим. перев.: WWAN (Wireless Wide Area Network)~---