13 Отчет о состоянии службы и ее журнал



Pdf просмотр
страница2/12
Дата09.11.2016
Размер5.01 Kb.
Просмотров3045
Скачиваний0
1   2   3   4   5   6   7   8   9   ...   12
1453 root name=systemd:/systemd-1/dbus.service /usr/libexec/upowerd
1473 rtkit name=systemd:/systemd-1/rtkit-daemon.service /usr/libexec/rtkit-daemon
1496 root name=systemd:/systemd-1/accounts-daemon.service /usr/libexec/accounts-daemon
1499 root name=systemd:/systemd-1/systemd-logger.service /lib/systemd/systemd-logger
1511 lennart name=systemd:/systemd-1/prefdm.service /usr/bin/gnome-keyring-daemon --daemonize --login
1534 lennart name=systemd:/user/lennart/1
dbus-launch --sh-syntax --exit-with-session
1535 lennart name=systemd:/user/lennart/1
/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
1603 lennart name=systemd:/user/lennart/1
/usr/libexec/gconfd-2 10

1612 lennart name=systemd:/user/lennart/1
/usr/libexec/gnome-settings-daemon
1615 lennart name=systemd:/user/lennart/1
/usr/libexec/gvfsd
1626 lennart name=systemd:/user/lennart/1
/usr/libexec//gvfs-fuse-daemon /home/lennart/.gvfs
1634 lennart name=systemd:/user/lennart/1
/usr/bin/pulseaudio --start --log-target=syslog
1649 lennart name=systemd:/user/lennart/1
\_ /usr/libexec/pulse/gconf-helper
1645 lennart name=systemd:/user/lennart/1
/usr/libexec/bonobo-activation-server --ac-activate --ior-output-fd=24 1668 lennart name=systemd:/user/lennart/1
/usr/libexec/im-settings-daemon
1701 lennart name=systemd:/user/lennart/1
/usr/libexec/gvfs-gdu-volume-monitor
1707 lennart name=systemd:/user/lennart/1
/usr/bin/gnote --panel-applet --oaf-activate-iid=OAFIID:GnoteApplet_Factory --oaf-ior-fd=22 1725 lennart name=systemd:/user/lennart/1
/usr/libexec/clock-applet
1727 lennart name=systemd:/user/lennart/1
/usr/libexec/wnck-applet
1729 lennart name=systemd:/user/lennart/1
/usr/libexec/notification-area-applet
1733 root name=systemd:/systemd-1/dbus.service /usr/libexec/udisks-daemon
1747 root name=systemd:/systemd-1/dbus.service
\_ udisks-daemon: polling /dev/sr0 1759 lennart name=systemd:/user/lennart/1
gnome-screensaver
1780 lennart name=systemd:/user/lennart/1
/usr/libexec/gvfsd-trash --spawner :1.9 /org/gtk/gvfs/exec_spaw/0 1864 lennart name=systemd:/user/lennart/1
/usr/libexec/gvfs-afc-volume-monitor
1874 lennart name=systemd:/user/lennart/1
/usr/libexec/gconf-im-settings-daemon
1903 lennart name=systemd:/user/lennart/1
/usr/libexec/gvfsd-burn --spawner :1.9 /org/gtk/gvfs/exec_spaw/1 1909 lennart name=systemd:/user/lennart/1
gnome-terminal
1913 lennart name=systemd:/user/lennart/1
\_ gnome-pty-helper
1914 lennart name=systemd:/user/lennart/1
\_ bash
29231 lennart name=systemd:/user/lennart/1
|
\_ ssh tango
2221 lennart name=systemd:/user/lennart/1
\_ bash
4193 lennart name=systemd:/user/lennart/1
|
\_ ssh tango
2461 lennart name=systemd:/user/lennart/1
\_ bash
29219 lennart name=systemd:/user/lennart/1
|
\_ emacs systemd-for-admins-1.txt
15113 lennart name=systemd:/user/lennart/1
\_ bash
27251 lennart name=systemd:/user/lennart/1
\_ empathy
29504 lennart name=systemd:/user/lennart/1
\_ ps xawf -eo pid,user,cgroup,args
1968 lennart name=systemd:/user/lennart/1
ssh-agent
1994 lennart name=systemd:/user/lennart/1
gpg-agent --daemon --write-env-file
18679 lennart name=systemd:/user/lennart/1
/bin/sh /usr/lib64/firefox-3.6/run-mozilla.sh /usr/lib64/firefox-3.6/firefox
18741 lennart name=systemd:/user/lennart/1
\_ /usr/lib64/firefox-3.6/firefox
28900 lennart name=systemd:/user/lennart/1
\_ /usr/lib64/nspluginwrapper/npviewer.bin --plugin /usr/lib64/mozilla/plugins/libflashplayer.so --connection /org/wrapper/NSPlugins/libflashplayer.so/18741-6 4016 root name=systemd:/systemd-1/sysinit.service /usr/sbin/bluetoothd --udev
11

4094 smmsp name=systemd:/systemd-1/sendmail.service sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
4096 root name=systemd:/systemd-1/sendmail.service sendmail: accepting connections
4112 ntp name=systemd:/systemd-1/ntpd.service /usr/sbin/ntpd -n -u ntp:ntp -g
27262 lennart name=systemd:/user/lennart/1
/usr/libexec/mission-control-5 27265 lennart name=systemd:/user/lennart/1
/usr/libexec/telepathy-haze
27268 lennart name=systemd:/user/lennart/1
/usr/libexec/telepathy-logger
27270 lennart name=systemd:/user/lennart/1
/usr/libexec/dconf-service
27280 lennart name=systemd:/user/lennart/1
/usr/libexec/notification-daemon
27284 lennart name=systemd:/user/lennart/1
/usr/libexec/telepathy-gabble
27285 lennart name=systemd:/user/lennart/1
/usr/libexec/telepathy-salut
27297 lennart name=systemd:/user/lennart/1
/usr/libexec/geoclue-yahoo
(Данный листинг был сокращен за счет удаления из него строк, описывающих потоки ядра, так как они никак не относятся к обсуждаемой нами теме.)
12

Обратите внимание на третий столбец, показывающий имя контрольной группы, в которую systemd поместил данный процесс. Например, процесс udev находится в группе name=systemd:/systemd-1/sysinit.service. В эту группу входят процессы, порожден- ные службой sysinit.service, которая запускается на ранней стадии загрузки.
Вы можете очень сильно упростить себе работу, если назначите для вышеприведен- ной команды какой-нибудь простой и короткий псевдоним, например alias psc=’ps xawf -eo pid,user,cgroup,args’
— теперь для получения исчерпывающей информации по процессам достаточно будет нажать всего четыре клавиши.
Альтернативный способ получить ту же информацию — воспользоваться утилитой systemd-cgls, входящей в комплект поставки systemd. Она отображает иерархию кон- трольных групп в виде псевдографической диаграммы-дерева
13
:
13
Прим.
перев.:
Стоит заметить,
что в
нижеприведенном листинге используется
ASCII- псевдографика. Между тем, уже довольно давно отображение иерархии процессов в systemd-cgls и systemctl status производится в более выразительной юникодной псевдографике. ASCII-вариант выводится только в том случае, если консоль не поддерживает Unicode.
13

$ systemd-cgls
+
2 [kthreadd]
[...]
+ 4281 [flush-8:0]
+ user
| \ lennart
|
\ 1
|
+
1495 pam: gdm-password
|
+
1521 gnome-session
|
+
1534 dbus-launch --sh-syntax --exit-with-session
|
+
1535 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
|
+
1603 /usr/libexec/gconfd-2
|
+
1612 /usr/libexec/gnome-settings-daemon
|
+
1615 /ushr/libexec/gvfsd
|
+
1621 metacity
|
+
1626 /usr/libexec//gvfs-fuse-daemon /home/lennart/.gvfs
|
+
1634 /usr/bin/pulseaudio --start --log-target=syslog
|
+
1635 gnome-panel
|
+
1638 nautilus
|
+
1640 /usr/libexec/polkit-gnome-authentication-agent-1
|
+
1641 /usr/bin/seapplet
|
+
1644 gnome-volume-control-applet
|
+
1645 /usr/libexec/bonobo-activation-server --ac-activate --ior-output-fd=24
|
+
1646 /usr/sbin/restorecond -u
|
+
1649 /usr/libexec/pulse/gconf-helper
|
+
1652 /usr/bin/devilspie
|
+
1662 nm-applet --sm-disable
|
+
1664 gnome-power-manager
|
+
1665 /usr/libexec/gdu-notification-daemon
|
+
1668 /usr/libexec/im-settings-daemon
|
+
1670 /usr/libexec/evolution/2.32/evolution-alarm-notify
|
+
1672 /usr/bin/python /usr/share/system-config-printer/applet.py
|
+
1674 /usr/lib64/deja-dup/deja-dup-monitor
|
+
1675 abrt-applet
|
+
1677 bluetooth-applet
|
+
1678 gpk-update-icon
14

|
+
1701 /usr/libexec/gvfs-gdu-volume-monitor
|
+
1707 /usr/bin/gnote --panel-applet --oaf-activate-iid=OAFIID:GnoteApplet_Factory --oaf-ior-fd=22
|
+
1725 /usr/libexec/clock-applet
|
+
1727 /usr/libexec/wnck-applet
|
+
1729 /usr/libexec/notification-area-applet
|
+
1759 gnome-screensaver
|
+
1780 /usr/libexec/gvfsd-trash --spawner :1.9 /org/gtk/gvfs/exec_spaw/0
|
+
1864 /usr/libexec/gvfs-afc-volume-monitor
|
+
1874 /usr/libexec/gconf-im-settings-daemon
|
+
1882 /usr/libexec/gvfs-gphoto2-volume-monitor
|
+
1903 /usr/libexec/gvfsd-burn --spawner :1.9 /org/gtk/gvfs/exec_spaw/1
|
+
1909 gnome-terminal
|
+
1913 gnome-pty-helper
|
+
1914 bash
|
+
1968 ssh-agent
|
+
1994 gpg-agent --daemon --write-env-file
|
+
2221 bash
|
+
2461 bash
|
+
4193 ssh tango
|
+ 15113 bash
|
+ 18679 /bin/sh /usr/lib64/firefox-3.6/run-mozilla.sh /usr/lib64/firefox-3.6/firefox
|
+ 18741 /usr/lib64/firefox-3.6/firefox
|
+ 27251 empathy
|
+ 27262 /usr/libexec/mission-control-5
|
+ 27265 /usr/libexec/telepathy-haze
|
+ 27268 /usr/libexec/telepathy-logger
|
+ 27270 /usr/libexec/dconf-service
|
+ 27280 /usr/libexec/notification-daemon
|
+ 27284 /usr/libexec/telepathy-gabble
|
+ 27285 /usr/libexec/telepathy-salut
|
+ 27297 /usr/libexec/geoclue-yahoo
|
+ 28900 /usr/lib64/nspluginwrapper/npviewer.bin --plugin /usr/lib64/mozilla/plugins/libflashplayer.so --connection /org/wrapper/NSPlugins/libflashplayer.so/18741-6
|
+ 29219 emacs systemd-for-admins-1.txt
|
+ 29231 ssh tango
|
\ 29519 systemd-cgls
\ systemd-1 15

+ 1 /sbin/init
+ ntpd.service
| \ 4112 /usr/sbin/ntpd -n -u ntp:ntp -g
+ systemd-logger.service
| \ 1499 /lib/systemd/systemd-logger
+ accounts-daemon.service
| \ 1496 /usr/libexec/accounts-daemon
+ rtkit-daemon.service
| \ 1473 /usr/libexec/rtkit-daemon
+ console-kit-daemon.service
| \ 1408 /usr/sbin/console-kit-daemon --no-daemon
+ prefdm.service
| + 1376 /usr/sbin/gdm-binary -nodaemon
| + 1391 /usr/libexec/gdm-simple-slave --display-id /org/gnome/DisplayManager/Display1 --force-active-vt
| + 1394 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-f2KUOh/database -nolisten tcp vt1
| + 1419 /usr/bin/dbus-launch --exit-with-session
| \ 1511 /usr/bin/gnome-keyring-daemon --daemonize --login
+ getty@.service
| + tty6
| | \ 1346 /sbin/mingetty tty6
| + tty4
| | \ 1343 /sbin/mingetty tty4
| + tty5
| | \ 1342 /sbin/mingetty tty5
| + tty3
| | \ 1339 /sbin/mingetty tty3
| \ tty2
|
\ 1332 /sbin/mingetty tty2
+ abrtd.service
| \ 1317 /usr/sbin/abrtd -d -s
+ crond.service
| \ 1344 crond
+ sshd.service
| \ 1362 /usr/sbin/sshd
+ sendmail.service
| + 4094 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
16

| \ 4096 sendmail: accepting connections
+ haldaemon.service
| + 1249 hald
| + 1250 hald-runner
| + 1273 hald-addon-input: Listening on /dev/input/event3 /dev/input/event9 /dev/input/event1 /dev/input/event7 /dev/input/event2 /dev/input/event0 /dev/input/event8
| + 1275 /usr/libexec/hald-addon-rfkill-killswitch
| + 1284 /usr/libexec/hald-addon-leds
| + 1285 /usr/libexec/hald-addon-generic-backlight
| \ 1287 /usr/libexec/hald-addon-acpi
+ irqbalance.service
| \ 1210 irqbalance
+ avahi-daemon.service
| + 1175 avahi-daemon: running [epsilon.local]
+ NetworkManager.service
| + 1171 /usr/sbin/NetworkManager --no-daemon
| \ 4028 /sbin/dhclient -d -4 -sf /usr/libexec/nm-dhcp-client.action -pf /var/run/dhclient-wlan0.pid -lf /var/lib/dhclient/dhclient-7d32a784-ede9-4cf6-9ee3-60edc0bce5ff-wlan0.lease -cf /var/run/nm-dhclient-wlan0.conf wlan0
+ rsyslog.service
| \ 1193 /sbin/rsyslogd -c 4
+ mdmonitor.service
| \ 1207 mdadm --monitor --scan -f --pid-file=/var/run/mdadm/mdadm.pid
+ cups.service
| \ 1195 cupsd -C /etc/cups/cupsd.conf
+ auditd.service
| + 1131 auditd
| + 1133 /sbin/audispd
| \ 1135 /usr/sbin/sedispatch
+ dbus.service
| +
1096 /bin/dbus-daemon --system --address=systemd: --nofork --systemd-activation
| +
1216 /usr/sbin/modem-manager
| +
1219 /usr/libexec/polkit-1/polkitd
| +
1242 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
| +
1453 /usr/libexec/upowerd
| +
1733 /usr/libexec/udisks-daemon
| +
1747 udisks-daemon: polling /dev/sr0
| \ 29509 /usr/libexec/packagekitd
+ dev-mqueue.mount
17

+ dev-hugepages.mount
\ sysinit.service
+
455 /sbin/udevd -d
+
4016 /usr/sbin/bluetoothd --udev
+ 28188 /sbin/udevd -d
\ 28191 /sbin/udevd -d
(Как и предыдущий, этот листинг был сокращен за счет удаления перечня потоков ядра.)
18

Как видно из листинга, данная команда наглядно показывает принадлежность про- цессов к их контрольным группам, а следовательно, и к службам, так как systemd име- нует группы в соответствии с названиями служб. Например, из приведенного листинга нетрудно понять, что служба системного аудита auditd.service порождает три отдель- ных процесса: auditd, audispd и sedispatch.
Наиболее внимательные читатели, вероятно, уже заметили, что некоторые процессы помещены в группу /user/lennart/1. Дело в том, что systemd занимается отслежи- ванием и группировкой не только процессов, относящихся к системным службам, но и процессов, запущенных в рамках пользовательских сеансов. В последующих статьях мы обсудим этот вопрос более подробно.
3
Преобразование SysV init-скрипта в systemd service- файл
Традиционно, службы Unix и Linux (демоны) запускаются через SysV init-скрипты.
Эти скрипты пишутся на языке Bourne Shell (/bin/sh), располагаются в специальном ка- талоге (обычно /etc/rc.d/init.d/) и вызываются с одним из стандартных параметров
(start, stop, reload и т.п.) — таким образом указывается действие, которое необходимо произвести над службой (запустить, остановить, заставить перечитать конфигурацию).
При запуске службы такой скрипт, как правило, вызывает бинарник демона, который,
в свою очередь, форкается, порождая фоновый процесс (т.е. демонизируется). Заме- тим, что shell-скрипты, как правило, отличается низкой скоростью работы, излишней подробностью изложения и крайней хрупкостью. Читать их, из-за изобилия всевозмож- ного вспомогательного и дополнительного кода, чрезвычайно тяжело. Впрочем, нельзя не упомянуть, что эти скрипты являются очень гибким инструментом (ведь, по сути, это всего лишь код, который можно модифицировать как угодно). С другой стороны, мно- гие задачи, возникающие при работе со службами, довольно тяжело решить средства- ми shell-скриптов. К таким задачам относятся: организация параллельного исполнения,
корректное отслеживание процессов, конфигурирование различных параметров среды исполнения процесса. systemd обеспечивает совместимость с init-скриптами, однако, с учетом описанных выше их недостатков, более правильным решением будет использо- вание штатных service-файлов systemd для всех установленных в системе служб. Стоит отметить что, в отличие от init-скриптов, которые часто приходится модифицировать при переносе из одного дистрибутива в другой, один и тот же service-файл будет рабо- тать в любом дистрибутиве, использующем systemd (а таких дистрибутивов с каждым днем становится все больше и больше). Далее мы вкратце рассмотрим процесс преобра- зования SysV init-скрипта в service-файл systemd. Вообще говоря, service-файл должен создаваться разработчиками каждого демона, и включаться в комплект его поставки.
Если вам удалось успешно создать работоспособный service-файл для какого-либо де- мона, настоятельно рекомендуем вам отправить этот файл разработчикам. Вопросы по полноценной интеграции демонов с systemd, с максимальным использованием всех его возможностей, будут рассмотрены в последующих статьях этого цикла, пока же огра- ничимся ссылкой на страницу официальной документации.
Итак, приступим. В качестве примера возьмем init-скрипт демона ABRT (Automatic
Bug Reporting Tool, службы, занимающейся сбором crash dump’ов). Исходный скрипт
(в варианте для дистрибутива Fedora) можно загрузить здесь
Начнем с того, что прочитаем исходный скрипт (неожиданный ход, правда?) и выде- лим полезную информацию из груды хлама. Практически у всех init-скриптов б´
ольшая часть кода является чисто вспомогательной, и мало чем отличается от одного скрипта к другому. Как правило, при создании новых скриптов этот код просто копируется из уже существующих (разработка в стиле copy-paste). Итак, в исследуемом скрипте нас интересует следующая информация:
∙ Строка описания службы: «Daemon to detect crashing apps». Как нетрудно заме- тить, комментарии в заголовке скрипта весьма пространны и описывают не сколь-
19
ко саму службу, сколько скрипт, ее запускающий. service-файлы systemd тоже со- держат описание, но оно относится исключительно к службе, а не к service-файлу.
∙ LSB-заголовок
14
, содержащий информацию о зависимостях. systemd, базирующий- ся на идеях socket-активации, обычно не требует явного описания зависимостей
(либо требует самого минимального описания). Заметим, что основополагающие принципы systemd, включая socket-активацию, рассмотрены в статье
Rethinking
PID 1
, в которой systemd был впервые представлен широкой публике
15
. Возвра- щаясь к нашему примеру: в данном случае ценной информацией о зависимостях является только строка Required-Start: $syslog, сообщающая, что для рабо- ты abrtd требуется демон системного лога. Информация о второй зависимости,
$local_fs, является избыточной, так как systemd приступает к запуску служб уже после того, как все файловые системы готовы для работы.
∙ Также, LSB-заголовок сообщает, что данная служба должна быть запущена на уровнях исполнения (runlevels) 3 (консольный многопользовательский) и 5 (гра- фический многопользовательской).
∙ Исполняемый бинарник демона называется /usr/sbin/abrtd.
Вот и вся полезная информация. Все остальное содержимое 115-строчного скрипта является чисто вспомогательным кодом: операции синхронизации и упорядочивания за- пуска (код, относящийся к lock-файлам), вывод информационных сообщений (команды echo), разбор входных параметров (монструозный блок case).
На основе приведенной выше информации, мы можем написать следующий service- файл:
[Unit]
Description=Daemon to detect crashing apps
After=syslog.target
[Service]
ExecStart=/usr/sbin/abrtd
Type=forking
[Install]
WantedBy=multi-user.target
Рассмотрим этот файл поподробнее.
Секция [Unit] содержит самую общую информацию о службе. Не будем забывать,
что systemd управляет не только службами, но и многими другими объектами, в частно- сти, устройствами, точками монтирования, таймерами и т.п. Общее наименование всех этих объектов — юнит (unit). Одноименная секция конфигурационного файла опреде- ляет наиболее общие свойства, которые могут быть присущи любому юниту. В нашем случае это, во-первых, строка описания, и во-вторых, указание, что данный юнит ре- комендуется активировать после запуска демона системного лога
16
. Эта информация,
14
LSB-заголовок — определенная в
Linux Standard Base схема записи метаданных о службах в блоках комментариев соответствующих init-скриптов. Изначально эта схема была введена именно для того,
чтобы стандартизировать init-скрипты во всех дистрибутивах. Однако разработчики многих дистри- бутивов не считают нужным точно исполнять требования LSB, и поэтому формы представления ме- таданных в различных дистрибутивах могут отличаться. Вследствие этого, при переносе init-скрипта из одного дистрибутива в другой, скрипт приходится модифицировать. Например, демон пересылки почты при описании зависимостей может именоваться MTA или smtpdaemon (Fedora), smtp (openSUSE),
mail-transport-agent (Debian и Ubuntu), mail-transfer-agent. Таким образом, можно утверждать, что стандарт LSB не справляется с возложенной на него задачей.
15
Прим. перев.: Ее русский перевод (сделанный совершенно независимо от данного документа, совсем другим человеком) можно прочитать здесь:
часть 1
,
часть 2 16
Строго говоря, эту зависимость здесь указывать не нужно — в системах, в которых демон системно- го лога активируется через сокет, данная зависимость является избыточной. Современные реализации демона системного лога (например, rsyslog начиная с пятой версии) поддерживают активацию через сокет. В системах, использующих такие реализации, явное указание After=syslog.target будет из-
20
как мы помним, была указана в LSB-заголовке исходного init-скрипта. В нашем кон- фигурационном файле мы указываем зависимость от демона системного лога при по- мощи директивы After, указывающей на юнит syslog.taget. Это специальный юнит,
позволяющий ссылаться на любую реализацию демона системного лога, независимо от используемой программы (например, rsyslog или syslog-ng) и типа активации (как обыч- ной службы или через log-сокет). Подробнее о таких специальных юнитах можно почи- тать страницу официальной документации. Обратите внимание, что директива After,
в отсутствие директивы Requires, задает лишь порядок загрузки, но не задает жест- кой зависимости. То есть, если при загрузке конфигурация systemd будет предписывать запуск как демона системного лога, так и abrtd, то сначала будет запущен демон си- стемного лога, и только потом abrtd. Если же конфигурация не будет содержать явного указания запустить демон системного лога, он не будет запущен даже при запуске abrtd.
И это поведение нас полностью устраивает, так как abrtd прекрасно может обходить- ся и без демона системного лога. В противном случае, мы могли бы воспользоваться директивой Requires, задающей жесткую зависимость между юнитами.
Следующая секция, [Service], содержит информацию о службе. Сюда включают- ся настройки, относящие именно к службам, но не к другим типам юнитов. В нашем случае, таких настроек две: ExecStart, определяющая расположение бинарника демона и аргументы, с которыми он будет вызван (в нашем случае они отсутствуют), и Type,
позволяющая задать метод, по которому systemd определит окончание периода запуска службы. Традиционный для Unix метод демонизации процесса, когда исходный процесс форкается, порождая демона, после чего завершается, описывается типом forking (как в нашем случае). Таким образом, systemd считает службу запущенной с момента завер- шения работы исходного процесса, и рассматривает в качестве основного процесса этой службы порожденный им процесс-демон.
И наконец, третья секция, [Install]. Она содержит рекомендации по установке конкретного юнита, указывающие, в каких ситуациях он должен быть активирован.
В нашем случае, служба abrtd запускается при активации юнита multi-user.target.
Это специальный юнит, примерно соответствующий роли третьего уровня исполнения классического SysV
17
. Директива WantedBy никак не влияет на уже работающую служ- бу, но она играет важную роль при выполнении команды systemctl enable, задавая,
в каких условиях должен активироваться устанавливаемый юнит. В нашем примере,
служба abrtd будет активироваться при переходе в состояние multi-user.target, т.е.,
при каждой нормальной
18
загрузке
19
Вот и все. Мы получили минимальный рабочий service-файл systemd. Чтобы про- верить его работоспособность, скопируем его в /etc/systemd/system/abrtd.service,
после чего командой systemctl daemon-reload уведомим systemd об изме- нении конфигурации.
Теперь нам остается только запустить нашу службу:
systemctl start abrtd.service.
Проверить состояние службы можно командой systemctl status abrtd.service,
а чтобы остановить ее,
нужно скомандовать systemctl stop abrtd.service. И наконец, команда systemctl enable abrtd.service выполнит установку service-файла, обеспечив его активацию при каждой загрузке (ана- лог chkconfig abrtd on в классическом SysV).
Приведенный выше service-файл является практический точным переводом исход- ного init-скрипта, и он никак не использует широкий спектр возможностей, предостав- ляемых systemd. Ниже приведен немного улучшенный вариант этого же файла:


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   12


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал