Сценарии службы и systemctl - какие использовать

24

В Fedora у нас есть скрипты 'systemctl' и 'service'. Похоже, сервис внутренне звонит systemctl. Так какой же правильный / правильный способ для Fedora запускать или останавливать сервисы - с помощью systemctlили с помощью serviceсредства? Может быть, есть нюансы, о которых стоит помнить?

отметка
источник
3
Пользователь Debian, поэтому не могу ответить наверняка, но service foo startв Debian работает, является ли ваша система инициализации systemd, sysvinit или upstart; systemctlскорее всего, не будет работать, если systemd не PID1.
Шадур

Ответы:

14

Используется способ остановки / запуска сервисов в Fedora (более поздние версии) systemctl.

Однако может остаться несколько служб, /etc/init.d/которыми вы могли бы управлять с помощью serviceкоманды. Вы по-прежнему можете управлять ими, так systemctlкак systemdавтоматически сопоставляет их с файлами юнитов.

Например, на моем CentOS 7 (Fedora 19 или около того) есть /etc/rc.d/init.d/networkскрипт, который я могу контролировать с помощью serviceкоманды. Если я использую systemctlвместо этого, он все еще работает:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

Как вы можете видеть, он был сопоставлен с /etc/rc.d/init.d/networkкомандой systemdи systemctlуправляет ею.

Я мог бы быть таким «прошлым годом» и использовать serviceвместо этого:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

Оба работают, но учтите, что они дают разные результаты в своих statusкомандах.

garethTheRed
источник
10

Как правило, serviceсценарии перенаправляются в сценарии systemctl (Systemd), поэтому вы в основном предпочитаете использовать их.

пример

Из моей системы Fedora 20.

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

Я обычно использую оба метода, так как старые привычки умирают тяжело. Но если вы пытаетесь адаптироваться к миру Systemd, я буду продолжать заставлять себя делать что-то, используя, systemctlесли это возможно.

Кроме того, Systemd объединяет все, что вы делали с одной командой chkconfigи serviceпод ней, systemctlтак что, как правило, мне легче справиться в долгосрочной перспективе.

Эта таблица на веб-сайте проекта Fedora полезна для переключения.

   ss1

Кстати, ответ на ваш первоначальный вопрос дан в сноске на этой странице:

Обратите внимание, что все перечисленные выше строки / sbin / service и / sbin / chkconfig продолжают работать в systemd и при необходимости будут преобразованы в собственные эквиваленты. Единственным исключением является chkconfig --list.

Ссылки

SLM
источник