SysVinit to Systemd Cheatsheet/ru

From FedoraProject

Jump to: navigation, search

Цель этой страницы - помочь системным администраторам разобраться, какие команды systemd заменяют привычные команды sysvinit. Более подробную информацию по systemd вы можете найти по ссылке systemd.

Обратите внимание, что команды 'service' и 'chkconfig' продолжат работать в мире systemd практически без изменений. Тем не менее в этой инструкции показано как выполнить те же действия с помощью встроенных утилит systemctl.

Сервисы и службы

Команда sysvinit Команда systemd Комментарий
service frobozz start systemctl start frobozz.service Используется для разового запуска службы.
service frobozz stop systemctl stop frobozz.service Используется для разовой остановки службы.
service frobozz restart systemctl restart frobozz.service Используется для разового перезапуска службы.
service frobozz reload systemctl reload frobozz.service Если такая возможность поддерживается службой, перезагружает конфигурационный файл, не прерывая процесса.
service frobozz condrestart systemctl condrestart frobozz.service Перезапускает службу, если она запущена.
service frobozz status systemctl status frobozz.service Сообщает, запущена ли служба.
ls /etc/rc.d/init.d/ ls /lib/systemd/system/*.service /etc/systemd/system/*.service Используется для получения списка служб, которые могут быть запущены или остановлены.
chkconfig frobozz on systemctl enable frobozz.service Включает запуск службы после перезагрузки.
chkconfig frobozz off systemctl disable frobozz.service Отключает запуск службы после перезагрузки.
chkconfig frobozz systemctl is-enabled frobozz.service Используется для проверки, будет ли служба запущена после перезагрузки.
chkconfig frobozz --list ls /etc/systemd/system/*.wants/frobozz.service Выдает список уровней загрузки(целей), при которых данная служба будет запущена автоматически.
chkconfig frobozz --add Не используется, нет аналога.

Все вышеперечисленные команды /sbin/service и /sbin/chkconfig работают с systemd и автоматически переводятся в эквивалентные команды systemctl. Исключением является только chkconfig --list.

Warning (medium size).png
Дополнительные команды
Службы SysVinit могут иметь собственные дополнительные команды. Например, service iptables panic, или service httpd graceful. Сервисы systemd такой возможности не имеют. Каждый сервис решает эту проблему по-своему. Подробности ищите в документации и Release Notes соответствующего пакета.

Уровни загрузки/цели

Systemd использует понятие целей(target), сходное по сути с уровнями загрузки, но работающее немного иначе. Каждая цель имеет название, описывающее её предназначение. Некоторые цели объединяют в себе запуск всех служб какой-то одной цели и нескольких дополнительных сервисов. Для замены уровней загрузки sysvinit были созданы специальные "цели", переключаться между которыми вы можете как и раньше используя команду telinit RUNLEVEL. Стандартные для Fedora уровни загрузки 0, 1, 3, 5, и 6 полностью эквиваленты соответствующим целям systemd.

К сожалению, не существует простого способа реализовать пользовательские уровни 2 и 4. В качестве замены пользователь может создать новую цель /etc/systemd/system/$YOURTARGET на основе одной из имеющихся (в качестве примера посмотрите /lib/systemd/system/graphical.target), создать папку /etc/systemd/system/$YOURTARGET.wants, и с помощью символических ссылок добавить все необходимые вам дополнительные сервисы в эту папку. (Символические ссылки должны указывать на файлы служб *.service, расположенные в /lib/systemd/system).

Уровень загрузки sysvinit Цель systemd Комментарий
0 runlevel0.target, poweroff.target Выключает систему.
1, s, single runlevel1.target, rescue.target Однопользовательский режим.
2, 4 runlevel2.target, runlevel4.target, multi-user.target Уровни, определенные пользователем. По умолчанию эквивалентны уровню 3.
3 runlevel3.target, multi-user.target Многопользовательский режим без графики.
5 runlevel5.target, graphical.target Многопользовательский режим с графикой. Обычно эквивалентен запуску всех сервисов уровня 3 и графическому менеджеру входа.
6 runlevel6.target, reboot.target Перезагрузка
emergency emergency.target Аварийная оболочка

Переключение уровня загрузки:

Команда sysvinit Команда systemd Комментарий
telinit 3 systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) Переключиться на многопользовательский уровень.
sed s/^id:.*:initdefault:/id:3:initdefault:/ ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target Установить загрузку по умолчанию на уровень 3.