Version v15.4 (2013-05-08 20:32) [AUTO]
This commit is contained in:
145
s4a.tex
145
s4a.tex
@@ -3496,7 +3496,7 @@ getty\footnote{Отметим, что +systemctl enable+ \emph{для экзем
|
|||||||
/etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service ; systemctl
|
/etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service ; systemctl
|
||||||
daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На самом деле,
|
daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На самом деле,
|
||||||
работать с символьными ссылками придется даже в современных версиях systemd (на
|
работать с символьными ссылками придется даже в современных версиях systemd (на
|
||||||
момент написания этих строк, последней является версия 202), так как
|
момент написания этих строк, последней является версия 203), так как
|
||||||
разработчики забыли включить в файл +serial-getty@.service+ секцию +[Install]+,
|
разработчики забыли включить в файл +serial-getty@.service+ секцию +[Install]+,
|
||||||
в результате чего попытка выполнения +systemctl enable+ для экземпляра
|
в результате чего попытка выполнения +systemctl enable+ для экземпляра
|
||||||
соответствующей службы ведет к закономерной ошибке. Впрочем, исправить это
|
соответствующей службы ведет к закономерной ошибке. Впрочем, исправить это
|
||||||
@@ -4663,7 +4663,7 @@ Tricks}\footnote{Прим. перев.: На самом деле, смотрет
|
|||||||
\qna{Как узнать текущий уровень выполнения?}
|
\qna{Как узнать текущий уровень выполнения?}
|
||||||
В один и тот же момент времени может быть активно несколько целевых состояний,
|
В один и тот же момент времени может быть активно несколько целевых состояний,
|
||||||
поэтому понятие текущего уровня выполнения (единственного и однозначно
|
поэтому понятие текущего уровня выполнения (единственного и однозначно
|
||||||
определенно) применимо уже далеко не~всегда. Узнать, какие состояния сейчас
|
определенного) применимо уже далеко не~всегда. Узнать, какие состояния сейчас
|
||||||
активны, вы можете при помощи команды
|
активны, вы можете при помощи команды
|
||||||
\begin{Verbatim}
|
\begin{Verbatim}
|
||||||
$ systemctl list-units --type=target
|
$ systemctl list-units --type=target
|
||||||
@@ -4677,18 +4677,18 @@ $ systemctl list-units --type=target
|
|||||||
при каждом обновлении. Что делать?}
|
при каждом обновлении. Что делать?}
|
||||||
Наиболее разумным решением будет скопировать исходный файл из
|
Наиболее разумным решением будет скопировать исходный файл из
|
||||||
+/usr/lib/systemd/system+ в +/etc/systemd/system+ и внести изменения в
|
+/usr/lib/systemd/system+ в +/etc/systemd/system+ и внести изменения в
|
||||||
полученную копию. Файлы из +/etc+ защищены от посягательств пакетного менеджера,
|
полученную копию. Юнит-файлы из +/etc+ защищены от посягательств пакетного
|
||||||
и при этом имеют приоритет над файлами из +/usr+. Если же вы захотите вернуться
|
менеджера, и при этом имеют приоритет над файлами из +/usr+. Если же вы захотите
|
||||||
к настройкам по умолчанию, достаточно будет просто удалить или переименовать
|
вернуться к настройкам по умолчанию, достаточно будет просто удалить или
|
||||||
созданный вами файл\footnote{Прим. перев.: Начиная с версии systemd 198,
|
переименовать созданный вами файл\footnote{Прим. перев.: Начиная с версии
|
||||||
необязательно копировать файл целиком, если вы хотите добавить/изменить
|
systemd 198, необязательно копировать файл целиком, если вы хотите
|
||||||
отдельные настройки. Можно просто создать в +/etc/systemd/system/+ подкаталог
|
добавить/изменить отдельные настройки. Можно просто создать в
|
||||||
+имя_службы.service.d+, а в нем~--- файл с именем, заканчивающимся на +.conf+,
|
+/etc/systemd/system/+ подкаталог +имя_службы.service.d+, а в нем~--- файл с
|
||||||
например, +mysettings.conf+, после чего вписать в этот файл необходимые
|
именем, заканчивающимся на +.conf+, например, +mysettings.conf+, после чего
|
||||||
настройки. Они будут применены <<поверх>> настроек из штатного файла
|
вписать в этот файл необходимые настройки. Они будут применены <<поверх>>
|
||||||
(расположенного в +/usr+).}.
|
настроек из штатного файла (расположенного в +/usr+).}.
|
||||||
|
|
||||||
\qna{Служба foo.service по умолчанию запускается только при поступлении
|
\qna{Служба \texttt{foo.service} по умолчанию запускается только при поступлении
|
||||||
входящего соединения (или подключении определенного оборудования, или при
|
входящего соединения (или подключении определенного оборудования, или при
|
||||||
появлении заданного файла). Как сделать так, чтобы она запускалась сразу при
|
появлении заданного файла). Как сделать так, чтобы она запускалась сразу при
|
||||||
загрузке?}
|
загрузке?}
|
||||||
@@ -4717,7 +4717,7 @@ $ systemctl list-units --type=target
|
|||||||
нужно поместить соответствующую символьную ссылку в каталог
|
нужно поместить соответствующую символьную ссылку в каталог
|
||||||
+getty.target.wants/+\footnote{Прим. перев.: Приведенная в оригинале команда
|
+getty.target.wants/+\footnote{Прим. перев.: Приведенная в оригинале команда
|
||||||
+systemctl enable serial-getty@ttyS2.service+ работать не~будет (по крайней
|
+systemctl enable serial-getty@ttyS2.service+ работать не~будет (по крайней
|
||||||
мере, в версиях до 202 включительно). Подробнее
|
мере, в версиях до 203 включительно). Подробнее
|
||||||
см.~примечание~\ref{ftn:enableserial}.}:
|
см.~примечание~\ref{ftn:enableserial}.}:
|
||||||
\begin{Verbatim}
|
\begin{Verbatim}
|
||||||
# ln -s /usr/lib/systemd/system/serial-getty@.service \
|
# ln -s /usr/lib/systemd/system/serial-getty@.service \
|
||||||
@@ -4725,9 +4725,9 @@ $ systemctl list-units --type=target
|
|||||||
# systemctl daemon-reload
|
# systemctl daemon-reload
|
||||||
\end{Verbatim}
|
\end{Verbatim}
|
||||||
|
|
||||||
Обратите внимание, что на виртуальных терминала getty запускаются автоматически,
|
Обратите внимание, что на виртуальных терминалах getty запускаются
|
||||||
как только пользователь переключается на данный терминал. Максимальное
|
автоматически, как только пользователь переключается на данный терминал.
|
||||||
количество таких терминалов задается параметром +NAutoVTs=+ в файле
|
Максимальное количество таких терминалов задается параметром +NAutoVTs=+ в файле
|
||||||
\href{http://www.freedesktop.org/software/systemd/man/logind.html}%
|
\href{http://www.freedesktop.org/software/systemd/man/logind.html}%
|
||||||
{logind.conf(7)}. Также см. главу~\ref{sec:getty}.
|
{logind.conf(7)}. Также см. главу~\ref{sec:getty}.
|
||||||
|
|
||||||
@@ -4765,9 +4765,9 @@ $ psc
|
|||||||
\end{Verbatim}
|
\end{Verbatim}
|
||||||
или просто посмотреть \verb+/proc/$PID/cgroup+. Также см. главу~\ref{sec:cgls}.
|
или просто посмотреть \verb+/proc/$PID/cgroup+. Также см. главу~\ref{sec:cgls}.
|
||||||
|
|
||||||
\qna{Почему вы не~используете infotify для отслеживания изменений в настройках?}
|
\qna{Почему вы не~используете inotify для отслеживания изменений в настройках?}
|
||||||
К сожалению, реализовать это весьма проблематично. За подробностями вы можете
|
К сожалению, реализовать это весьма проблематично. За подробностями вы можете
|
||||||
обратиться к обсуждению этой проблемы в
|
обратиться к обсуждению в
|
||||||
\href{https://bugzilla.redhat.com/show_bug.cgi?id=615527}{bugzilla}\footnote{Прим.
|
\href{https://bugzilla.redhat.com/show_bug.cgi?id=615527}{bugzilla}\footnote{Прим.
|
||||||
перев.: Вкратце, суть проблемы состоит в том, что перемещение/переименование
|
перев.: Вкратце, суть проблемы состоит в том, что перемещение/переименование
|
||||||
файла не~является атомарной операцией, а состоит из удаления одного файла и
|
файла не~является атомарной операцией, а состоит из удаления одного файла и
|
||||||
@@ -4781,11 +4781,11 @@ $ psc
|
|||||||
\texttt{/etc/init.d/foobar}?}
|
\texttt{/etc/init.d/foobar}?}
|
||||||
При наличии обоих этих файлов, приоритет всегда отдается штатному service-файлу,
|
При наличии обоих этих файлов, приоритет всегда отдается штатному service-файлу,
|
||||||
независимо от того, включен ли запуск соответствующего скрипта (например, через
|
независимо от того, включен ли запуск соответствующего скрипта (например, через
|
||||||
+chkconfig+) или нет. Обратите внимание, что отключение юнит-файла (например,
|
+chkconfig+) или нет. Обратите внимание, что отключение юнит-файла (в частности,
|
||||||
через +systemctl disable+ приведет к полному отключению службы, даже если
|
через +systemctl disable+) приведет к полному отключению службы, даже если
|
||||||
init-скрипт при этом будет включен.
|
init-скрипт при этом будет включен.
|
||||||
|
|
||||||
\qna{Как заставить \texttt{journalctl} выводить полные (не~сокращенные строки)?}
|
\qna{Как заставить \texttt{journalctl} выводить полные (не~сокращенные) строки?}
|
||||||
Используйте
|
Используйте
|
||||||
\begin{Verbatim}
|
\begin{Verbatim}
|
||||||
# journalctl --full
|
# journalctl --full
|
||||||
@@ -4808,7 +4808,11 @@ systemd все работало!}
|
|||||||
Это тоже долгая история. См. приложения~\ref{sec:apifs}.
|
Это тоже долгая история. См. приложения~\ref{sec:apifs}.
|
||||||
|
|
||||||
\qna{Как просмотреть список работающих служб?}
|
\qna{Как просмотреть список работающих служб?}
|
||||||
Запустите команду +systemctl+ без параметров:
|
Запустите команду +systemctl+ без параметров\footnote{Прим. перев.: +systemctl+
|
||||||
|
без параметров выведет состояние всех активных юнитов (в т.ч. сокетов,
|
||||||
|
устройств, точек монтирования, целевых состояний, таймеров, и т.д.). Чтобы
|
||||||
|
ограничиться только службами, добавьте параметр +-t service+. Чтобы вывести все
|
||||||
|
службы/юниты, включая неактивные, добавьте параметр +-a+.}:
|
||||||
\begin{Verbatim}[fontsize=\small]
|
\begin{Verbatim}[fontsize=\small]
|
||||||
$ systemctl
|
$ systemctl
|
||||||
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
|
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
|
||||||
@@ -4858,18 +4862,22 @@ iscsi.service netfs.service
|
|||||||
|
|
||||||
Вместо +Wants+ вы можете использовать другие типы зависимостей: +WantedBy+,
|
Вместо +Wants+ вы можете использовать другие типы зависимостей: +WantedBy+,
|
||||||
+Requires+, +RequiredBy+, +Conflicts+, +ConflictedBy+, +Before+,
|
+Requires+, +RequiredBy+, +Conflicts+, +ConflictedBy+, +Before+,
|
||||||
+After+\footnote{Прим. перев.: Разница между \texttt{*s} и \texttt{*edBy}~---
|
+After+\footnote{\label{ftn:wants}Прим. перев.: Разница между +*s+ и +*edBy+~---
|
||||||
в направлении зависимости. Например, если \texttt{multi-user.target} запрашивает
|
в направлении зависимости. Например, если цель +multi-user.target+ запрашивает
|
||||||
запуск (\texttt{Wants}) юнита \texttt{rc-local.service}, то она будет
|
запуск (+Wants+) службы +rc-local.service+, то она будет
|
||||||
указана в свойстве \texttt{WantedBy} этого юнита. Интересно, что свойство
|
указана в свойстве +WantedBy+ этой службы. Интересно, что свойство
|
||||||
\texttt{ConflictedBy} существует, однако задать его вручную нельзя~--- оно
|
+ConflictedBy+ существует, однако задать его напрямую нельзя~--- оно
|
||||||
формируется только на основании \texttt{Conflicts} других служб. Что касается
|
формируется только на основании +Conflicts+ других служб. Что касается
|
||||||
разница между +Wants+ и +Requires+, то первое является пожеланием, а второе
|
разница между +Wants+ и +Requires+, то первое является пожеланием, а второе
|
||||||
требованием. Если \emph{требуемый} юнит не~сможет запуститься, значит
|
требованием. Если требуемый (required) юнит не~сможет запуститься, то
|
||||||
не~запустится и сам зависящий от него юнит. \emph{Пожелания} не~накладывают
|
не~запустится и сам зависящий от него юнит. Пожелания (wants) не~накладывают
|
||||||
такого ограничения. А указания \emph{порядка} запуска (\texttt{Before},
|
такого ограничения~--- будет сделана попытка запуска зависимого юнита, но
|
||||||
\texttt{After}) вообще не~формируют зависимостей и работают только тогда, когда
|
результат ее никак не~отразится на зависящем юните. А указания \emph{порядка}
|
||||||
такие зависимости, прямо или косвенно, уже заданы.}.
|
запуска (+Before+, +After+) вообще не~формируют зависимостей и работают только
|
||||||
|
тогда, когда такие зависимости, прямо или косвенно, уже заданы.}\footnote{Прим.
|
||||||
|
перев. Отметим, что начиная с systemd 198, +systemctl+ поддерживает
|
||||||
|
специализированную команду +list-dependencies+, позволяющую отследить прямые и
|
||||||
|
косвенные (<<рекурсивные>>) зависимости заданного юнита.}.
|
||||||
|
|
||||||
\qna{Как узнать, что будет запущено при загрузке системы в заданное целевое
|
\qna{Как узнать, что будет запущено при загрузке системы в заданное целевое
|
||||||
состояние?}
|
состояние?}
|
||||||
@@ -4943,7 +4951,20 @@ X-сервера, может возникать ситуация, когда н
|
|||||||
на последовательную консоль: меню Вид (View)~$\Rightarrow$ Текстовые
|
на последовательную консоль: меню Вид (View)~$\Rightarrow$ Текстовые
|
||||||
консоли (Text Consoles)), вы можете попросить systemd выводить на эту
|
консоли (Text Consoles)), вы можете попросить systemd выводить на эту
|
||||||
консоль подробную отладочную информацию о ходе загрузки, добавив к
|
консоль подробную отладочную информацию о ходе загрузки, добавив к
|
||||||
параметрам ядра следующие аргументы:
|
параметрам ядра следующие аргументы\footnote{\label{ftn:netconsole}
|
||||||
|
Прим. перев.: Стоит упомянуть еще об одном отладочном инструменте~---
|
||||||
|
\hreftt{https://www.kernel.org/doc/Documentation/networking/netconsole.txt}%
|
||||||
|
{netconsole}. Это механизм ядра, позволяющий отправлять содержимое
|
||||||
|
буфера +kmsg+ (см.
|
||||||
|
\hreftt{http://linux.die.net/man/8/dmesg}{dmesg(8)}) по сети на заданный
|
||||||
|
компьютер. Обратите внимание, что его настройка через командную строку
|
||||||
|
ядра работает только если он вкомпилирован в ядро монолитно. Если же он
|
||||||
|
собран модулем, его необходимо настраивать через
|
||||||
|
+/etc/modprobe.d/*.conf+ или +configfs+, а также задавать его
|
||||||
|
принудительную подгрузку через параметр ядра
|
||||||
|
+modules-load=netconsole+. Кроме того, при этом надо обеспечить
|
||||||
|
перенаправление логов systemd в буфер ядра~--- соответствующие
|
||||||
|
параметры см. в разделе~\ref{sssec:kmsg}.}:
|
||||||
\begin{Verbatim}
|
\begin{Verbatim}
|
||||||
systemd.log_level=debug systemd.log_target=console console=ttyS0,38400
|
systemd.log_level=debug systemd.log_target=console console=ttyS0,38400
|
||||||
\end{Verbatim}
|
\end{Verbatim}
|
||||||
@@ -4999,8 +5020,8 @@ systemctl enable debug-shell.service
|
|||||||
на +/bin/bash+.
|
на +/bin/bash+.
|
||||||
|
|
||||||
\textbf{Совет:} Если вы не~можете воспользоваться командой +systemctl+
|
\textbf{Совет:} Если вы не~можете воспользоваться командой +systemctl+
|
||||||
(например, загрузились с помощью другой операционной системы), вы можете
|
(например, загрузились с помощью другой операционной системы),
|
||||||
выполнить соответствующие действия и напрямую:
|
выполните соответствующие действия напрямую:
|
||||||
\begin{Verbatim}
|
\begin{Verbatim}
|
||||||
cd $ПУТЬ_К_ВАШЕМУ_КОРНЮ/etc/systemd/system
|
cd $ПУТЬ_К_ВАШЕМУ_КОРНЮ/etc/systemd/system
|
||||||
mkdir -p sysinit.target.wants
|
mkdir -p sysinit.target.wants
|
||||||
@@ -5030,6 +5051,7 @@ ln -s /lib/systemd/system/debug-shell.service sysinit.target.wants/
|
|||||||
\end{description}
|
\end{description}
|
||||||
|
|
||||||
\subsubsection{Если у вас есть доступ к оболочке}
|
\subsubsection{Если у вас есть доступ к оболочке}
|
||||||
|
\label{sssec:kmsg}
|
||||||
|
|
||||||
Если вам все-таки удалось получить доступ к оболочке системы, вы можете
|
Если вам все-таки удалось получить доступ к оболочке системы, вы можете
|
||||||
воспользоваться ею для сбора диагностической информации. Загрузите систему со
|
воспользоваться ею для сбора диагностической информации. Загрузите систему со
|
||||||
@@ -5104,7 +5126,9 @@ mount -o remount,ro /
|
|||||||
собрать диагностическую информацию другими методами (которые мы уже
|
собрать диагностическую информацию другими методами (которые мы уже
|
||||||
рассматривали применительно к проблемам загрузки):
|
рассматривали применительно к проблемам загрузки):
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Используйте \hyperlink{it:serial}{последовательную консоль}.
|
\item Используйте \hyperlink{it:serial}{последовательную
|
||||||
|
консоль}\footnote{Прим. перев.: Здесь опять же стоит напомнить
|
||||||
|
про +netconsole+ (см. примечание~\ref{ftn:netconsole}).}.
|
||||||
\item Воспользуйтесь \hyperlink{it:dbgshell}{отладочной оболочкой}~---
|
\item Воспользуйтесь \hyperlink{it:dbgshell}{отладочной оболочкой}~---
|
||||||
она полезна не~только на ранних стадиях загрузки, но и на
|
она полезна не~только на ранних стадиях загрузки, но и на
|
||||||
поздних стадиях остановки системы.
|
поздних стадиях остановки системы.
|
||||||
@@ -5154,7 +5178,7 @@ May 11 20:26:23 scratch foo[1329]: Failed to parse config
|
|||||||
|
|
||||||
\subsection{Подготовка сообщений об ошибках}
|
\subsection{Подготовка сообщений об ошибках}
|
||||||
|
|
||||||
Если вы собираетесь отправить сообщение об ошибке в systemd, пожалуйста,
|
Если вы собираетесь отправить сообщение об ошибке systemd, пожалуйста,
|
||||||
включите в него диагностическую информацию, в частности, содержимое системных
|
включите в него диагностическую информацию, в частности, содержимое системных
|
||||||
журналов. Журналы должны быть полными (без вырезок), не~заархивированными, с
|
журналов. Журналы должны быть полными (без вырезок), не~заархивированными, с
|
||||||
MIME-типом +text/plain+.
|
MIME-типом +text/plain+.
|
||||||
@@ -5228,7 +5252,13 @@ API для скриптов. Тем не~менее, существует ряд
|
|||||||
дистрибутивы, которые одновременно поддерживают и init-скрипты,
|
дистрибутивы, которые одновременно поддерживают и init-скрипты,
|
||||||
и юнит-файлы. В таких дистрибутивах даже прямое обращение к
|
и юнит-файлы. В таких дистрибутивах даже прямое обращение к
|
||||||
скрипту при необходимости будет преобразовано в соответствующий
|
скрипту при необходимости будет преобразовано в соответствующий
|
||||||
запрос к systemd.)
|
запрос к systemd\footnote{Прим. перев.: Такое поведение
|
||||||
|
задают разработчики дистрибутива, при помощи
|
||||||
|
корректировки файла, содержащего стандартные функции для
|
||||||
|
init-скриптов (например, +/etc/rc.d/init.d/functions+ в
|
||||||
|
Fedora или +/etc/rc.status+ в openSUSE). Этот файл
|
||||||
|
вызывается из практически всех init-скриптов в самом начале их
|
||||||
|
работы.}.)
|
||||||
\item Информация о зависимостях служб, прописанная в LSB-заголовке
|
\item Информация о зависимостях служб, прописанная в LSB-заголовке
|
||||||
скрипта, играет существенную роль. Большинство реализаций SysV
|
скрипта, играет существенную роль. Большинство реализаций SysV
|
||||||
в различных дистрибутивах практически не~используют эту
|
в различных дистрибутивах практически не~используют эту
|
||||||
@@ -5238,7 +5268,8 @@ API для скриптов. Тем не~менее, существует ряд
|
|||||||
интерпретирует эти заголовки корректно, и использует
|
интерпретирует эти заголовки корректно, и использует
|
||||||
содержащуюся в них информацию при выполнении различных операций
|
содержащуюся в них информацию при выполнении различных операций
|
||||||
со службами (а не~только в момент их установки, как это делают
|
со службами (а не~только в момент их установки, как это делают
|
||||||
некоторые другие реализации SysV.)
|
некоторые другие реализации SysV\footnote{Прим. перев.:
|
||||||
|
Например, SysV init \verb|+| +insserv+.}).
|
||||||
\item Все операции со скриптами ограничены по времени при помощи
|
\item Все операции со скриптами ограничены по времени при помощи
|
||||||
тайм-аутов. В отличие от классических SysV-систем, где зависший
|
тайм-аутов. В отличие от классических SysV-систем, где зависший
|
||||||
init-скрипт полностью останавливает загрузку, systemd
|
init-скрипт полностью останавливает загрузку, systemd
|
||||||
@@ -5263,7 +5294,14 @@ API для скриптов. Тем не~менее, существует ряд
|
|||||||
\href{http://www.freedesktop.org/software/systemd/man/systemd-ask-password.html}%
|
\href{http://www.freedesktop.org/software/systemd/man/systemd-ask-password.html}%
|
||||||
{страницу руководства}).
|
{страницу руководства}).
|
||||||
\item Дополнительные команды для init-скриптов (кроме стандартных,
|
\item Дополнительные команды для init-скриптов (кроме стандартных,
|
||||||
таких, как +start+, +stop+, +status+ и т.д.)
|
таких, как +start+, +stop+, +status+, +restart+, +reload+,
|
||||||
|
+try-restart+, +force-reload+\footnote{Прим. перев.: Точный
|
||||||
|
список <<стандартных>> команд для SysV init-скриптов зависит от
|
||||||
|
используемого дистрибутива. Так уж исторически сложилось, что
|
||||||
|
практически каждый дистрибутив использовал собственные стандарты
|
||||||
|
интерфейсов SysV init. Это отразилось и на <<заглушках>>,
|
||||||
|
используемых для обратной совместимости. Выше приведен список
|
||||||
|
команд, которые поддерживаются как в Fedora, так и в openSUSE.})
|
||||||
не~поддерживаются\footnote{Прим. перев.: В частности, это
|
не~поддерживаются\footnote{Прим. перев.: В частности, это
|
||||||
касается специфичных для init-скрипта +/etc/init.d/iptables+
|
касается специфичных для init-скрипта +/etc/init.d/iptables+
|
||||||
команд +save+ и +panic+.}.
|
команд +save+ и +panic+.}.
|
||||||
@@ -5285,10 +5323,10 @@ API для скриптов. Тем не~менее, существует ряд
|
|||||||
отличается гораздо б\'{о}льшей гибкостью и эффективностью,
|
отличается гораздо б\'{о}льшей гибкостью и эффективностью,
|
||||||
чем система уровней исполнения. Как следствие, в некоторых
|
чем система уровней исполнения. Как следствие, в некоторых
|
||||||
случаях попытка узнать текущий уровень исполнения (например,
|
случаях попытка узнать текущий уровень исполнения (например,
|
||||||
при помощи +/sbin/runlevel+) может вернуть <<+N+>> (т.е.
|
при помощи +/sbin/runlevel+) может вернуть просто <<+N+>> (т.е.
|
||||||
<<уровень выполнения неизвестен>>), что может привести к
|
<<уровень выполнения неизвестен>>), что приведет к нарушению
|
||||||
нарушению работы скриптов, использующих явную проверку текущего
|
работы скриптов, использующих явную проверку текущего уровня
|
||||||
уровня исполнения. Избегайте подобных проверок.
|
исполнения. Избегайте подобных проверок.
|
||||||
\item +/sbin/chkconfig+ и аналогичные программы могут выводить
|
\item +/sbin/chkconfig+ и аналогичные программы могут выводить
|
||||||
некорректную информацию о состоянии службы (включена/отключена).
|
некорректную информацию о состоянии службы (включена/отключена).
|
||||||
Они оперируют только init-скриптами, игнорируя штатные
|
Они оперируют только init-скриптами, игнорируя штатные
|
||||||
@@ -5390,7 +5428,7 @@ systemd/udev\footnote{Прим. перев.: См. коммит
|
|||||||
различных механизмов именования сетевых интерфейсов, получив в итоге схему,
|
различных механизмов именования сетевых интерфейсов, получив в итоге схему,
|
||||||
похожую на biosdevname, но отличающуюся большей гибкостью и максимально
|
похожую на biosdevname, но отличающуюся большей гибкостью и максимально
|
||||||
приближенную к алгоритмам идентификации устройств, используемым в ядре.
|
приближенную к алгоритмам идентификации устройств, используемым в ядре.
|
||||||
В частности, udev теперь штатно поддерживает следующие механизмы именования
|
В частности, udev теперь штатно поддерживает следующие схемы именования
|
||||||
сетевых интерфейсов:
|
сетевых интерфейсов:
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item Имена устройств, встроенных в материнскую плату, формируются на
|
\item Имена устройств, встроенных в материнскую плату, формируются на
|
||||||
@@ -5408,7 +5446,7 @@ systemd/udev\footnote{Прим. перев.: См. коммит
|
|||||||
|
|
||||||
По умолчанию, systemd 197 при именовании сетевых интерфейсов последовательно
|
По умолчанию, systemd 197 при именовании сетевых интерфейсов последовательно
|
||||||
пытается применить схемы 1--3 (для первых двух требуется информация от
|
пытается применить схемы 1--3 (для первых двух требуется информация от
|
||||||
EFI/BIOS). Если ни одна из них не~подходит, используется схема 5. Что касается
|
прошивки). Если ни одна из них не~подходит, используется схема 5. Что касается
|
||||||
схемы 4~--- она не~задействована по умолчанию, однако ее можно включить вручную.
|
схемы 4~--- она не~задействована по умолчанию, однако ее можно включить вручную.
|
||||||
|
|
||||||
Вышеописанная комбинированная схема используется лишь \emph{в последнюю
|
Вышеописанная комбинированная схема используется лишь \emph{в последнюю
|
||||||
@@ -5418,7 +5456,7 @@ EFI/BIOS). Если ни одна из них не~подходит, испол
|
|||||||
|
|
||||||
\subsection{Еще раз, что здесь хорошего?}
|
\subsection{Еще раз, что здесь хорошего?}
|
||||||
|
|
||||||
С нашей новой схемой вы получаете:
|
Достоинства нашей новой схемы:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Имена интерфейсов остаются неизменными после перезагрузок.
|
\item Имена интерфейсов остаются неизменными после перезагрузок.
|
||||||
\item Имена интерфейсов остаются неизменными при добавлении или
|
\item Имена интерфейсов остаются неизменными при добавлении или
|
||||||
@@ -5434,7 +5472,7 @@ EFI/BIOS). Если ни одна из них не~подходит, испол
|
|||||||
устройство.
|
устройство.
|
||||||
\item Изменения в аппаратной конфигурации не~приводят к необходимости
|
\item Изменения в аппаратной конфигурации не~приводят к необходимости
|
||||||
записи в каталог +/etc+.
|
записи в каталог +/etc+.
|
||||||
\item Полная поддержка системам, корень которых доступен только
|
\item Полная поддержка систем, корень которых доступен только
|
||||||
для чтения.
|
для чтения.
|
||||||
\item Схема именования аналогичная той, которая используется
|
\item Схема именования аналогичная той, которая используется
|
||||||
udev для формирования стабильных символьных ссылок в каталоге
|
udev для формирования стабильных символьных ссылок в каталоге
|
||||||
@@ -5776,11 +5814,8 @@ service-файл, запускающий любую заданную вами п
|
|||||||
всего указать здесь ту же самую +network.target+: в результате, ваша служба и
|
всего указать здесь ту же самую +network.target+: в результате, ваша служба и
|
||||||
+network.target+ будут взаимно зависеть друг от друга, но при этом
|
+network.target+ будут взаимно зависеть друг от друга, но при этом
|
||||||
+network.target+ будет активирована только после того, как отработает ваша
|
+network.target+ будет активирована только после того, как отработает ваша
|
||||||
служба. Разница между +WantedBy=+ и +RequiredBy=+ состоит в том, что при
|
служба (о разницы между +WantedBy=+ и +RequiredBy=+ см.
|
||||||
использовании Require требуется \emph{успешное} завершение запуска вашей службы.
|
примечание~\ref{ftn:wants}). В качестве основы вы можете взять
|
||||||
Если он завершится с ненулевым кодом выхода или по сигналу, +network.target+
|
|
||||||
не~будет активирована. В то время как для Want достаточно просто завершения
|
|
||||||
запуска, вне зависимости от успешности. В качестве основы вы можете взять
|
|
||||||
\href{http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/data/NetworkManager-wait-online.service.in}%
|
\href{http://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/data/NetworkManager-wait-online.service.in}%
|
||||||
{апстримный файл} +NetworkManager-wait-online.service+. В завершение,
|
{апстримный файл} +NetworkManager-wait-online.service+. В завершение,
|
||||||
не~забудьте выполнить для своей службы +systemctl enable+.}.
|
не~забудьте выполнить для своей службы +systemctl enable+.}.
|
||||||
|
|||||||
Reference in New Issue
Block a user