CentOS 7 サービス管理方法について

今までサービスを制御・管理するために使っていた chkconfig は、CentOS 7 からは、レガシー扱いされ、もう使えなくなりました。

コマンドは打てるのですが、結果は以下の通りで、chkconfig を実行すると代わりに systemctl を使ってくださいというメッセージが表示されます。

ということで、CentOS 7 からサービスを管理するためには、systemctl を使わないと行けなくなりました。

CentOS 7 で chkconfig 実行
1
2
3
4
5
6
7
8
9
# chkconfig --list
注記: この出力は SysV サービスのみであり、ネイティブな systemd のサービスは含まれていません。
      systemd services. SysV 設定のデータはネイティブな systemd の設定によって上書きされます。
      systemd サービスを一覧表示するには 'systemctl list-unit-files' を使用してください。
      特定のターゲットにおいて有効化されているサービスを確認するには、
      'systemctl list-dependencies [target]'

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

chkconfig VS systemctl

旧 chkconfig新 systemctl の基本的な使い方は以下の通りです。

項目CentOS 6 までCentOS 7 から
サービス一覧確認chkconfig --listsystemctl list-unit-files
サービス起動service <SERVICE NAME> startsystemctl start <SERVICE NAME>
サービス停止service <SERVICE NAME> stopsystemctl stop <SERVICE NAME>
サービス再起動service <SERVICE NAME> restartsystemctl restart <SERVICE NAME>
設定再読み込みservice <SERVICE NAME> reloadsystemctl reload <SERVICE NAME>
サービス状態を確認service <SERVICE NAME> statussystemctl status <SERVICE NAME>
自動起動 有効化chkconfig <SERVICE NAME> onsystemctl enable <SERVICE NAME>
自動起動 無効化chkconfig <SERVICE NAME> offsystemctl disable <SERVICE NAME>

CentOS 6 までは、chkconfig・service 二つのコマンドを使いましたが、CentOS 7 からは、systemctl コマンドだけで良いです。

簡単にテストしてみる

Step 1. サービス一覧確認

以下の例では、有効になっているサービス一覧を確認します。

enabled 状態のサービス一覧確認
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# systemctl list-unit-files --type service | grep "enabled"
abrt-ccpp.service                           enabled
abrt-oops.service                           enabled
abrt-vmcore.service                         enabled
abrt-xorg.service                           enabled
abrtd.service                               enabled
accounts-daemon.service                     enabled
atd.service                                 enabled
auditd.service                              enabled
bluetooth.service                           enabled
chronyd.service                             enabled
crond.service                               enabled
cups.service                                enabled
dbus-org.bluez.service                      enabled
dbus-org.fedoraproject.FirewallD1.service   enabled
dbus-org.freedesktop.ModemManager1.service  enabled
dbus-org.freedesktop.NetworkManager.service enabled
dbus-org.freedesktop.nm-dispatcher.service  enabled
display-manager.service                     enabled
dmraid-activation.service                   enabled
firewalld.service                           enabled
gdm.service                                 enabled
getty@.service                              enabled
hypervkvpd.service                          enabled
hypervvssd.service                          enabled
irqbalance.service                          enabled
iscsi.service                               enabled
libstoragemgmt.service                      enabled
lvm2-monitor.service                        enabled
mdmonitor.service                           enabled
microcode.service                           enabled
ModemManager.service                        enabled
multipathd.service                          enabled
NetworkManager-dispatcher.service           enabled
NetworkManager.service                      enabled
postfix.service                             enabled
rngd.service                                enabled
rsyslog.service                             enabled
rtkit-daemon.service                        enabled
smartd.service                              enabled
spice-vdagentd.service                      enabled
sshd.service                                enabled
sysstat.service                             enabled
systemd-readahead-collect.service           enabled
systemd-readahead-drop.service              enabled
systemd-readahead-replay.service            enabled
tuned.service                               enabled
vmtoolsd.service                            enabled

動いているサービスに関しては、全て以下のように /etc/systemd/system/multi-user.target.wants/ ディレクトリ内にソフトリンクが作成されます。

  • サービスを有効(enable)にするとソフトインクが作成される
  • サービスを無効(disable)にするとソフトリンクが削除される
/etc/systemd/system/multi-user.target.wants/
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ls -l /etc/systemd/system/multi-user.target.wants/
合計 0
lrwxrwxrwx. 1 root root 44  9月 14 18:02 ModemManager.service -> /usr/lib/systemd/system/ModemManager.service
lrwxrwxrwx. 1 root root 46  9月 14 17:58 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root 41  9月 14 17:58 abrt-ccpp.service -> /usr/lib/systemd/system/abrt-ccpp.service
lrwxrwxrwx. 1 root root 41  9月 14 17:57 abrt-oops.service -> /usr/lib/systemd/system/abrt-oops.service
lrwxrwxrwx. 1 root root 43  9月 14 17:58 abrt-vmcore.service -> /usr/lib/systemd/system/abrt-vmcore.service
lrwxrwxrwx. 1 root root 41  9月 14 17:58 abrt-xorg.service -> /usr/lib/systemd/system/abrt-xorg.service
lrwxrwxrwx. 1 root root 37  9月 14 17:57 abrtd.service -> /usr/lib/systemd/system/abrtd.service
lrwxrwxrwx. 1 root root 35  9月 14 18:02 atd.service -> /usr/lib/systemd/system/atd.service
lrwxrwxrwx. 1 root root 38  9月 14 17:58 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 39  9月 14 17:58 chronyd.service -> /usr/lib/systemd/system/chronyd.service
lrwxrwxrwx. 1 root root 37  9月 14 17:57 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 33  9月 14 17:59 cups.path -> /usr/lib/systemd/system/cups.path
lrwxrwxrwx. 1 root root 42  9月 14 17:58 hypervkvpd.service -> /usr/lib/systemd/system/hypervkvpd.service
lrwxrwxrwx. 1 root root 42  9月 14 17:58 hypervvssd.service -> /usr/lib/systemd/system/hypervvssd.service
lrwxrwxrwx. 1 root root 42  9月 14 18:02 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 46  9月 14 17:58 libstoragemgmt.service -> /usr/lib/systemd/system/libstoragemgmt.service
lrwxrwxrwx. 1 root root 41  9月 14 17:58 mdmonitor.service -> /usr/lib/systemd/system/mdmonitor.service
lrwxrwxrwx. 1 root root 40  9月 14 17:57 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 36  9月 14 18:02 rngd.service -> /usr/lib/systemd/system/rngd.service
lrwxrwxrwx. 1 root root 39  9月 14 17:58 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 38  9月 14 18:02 smartd.service -> /usr/lib/systemd/system/smartd.service
lrwxrwxrwx. 1 root root 36  9月 14 18:02 sshd.service -> /usr/lib/systemd/system/sshd.service
lrwxrwxrwx. 1 root root 39  9月 14 18:02 sysstat.service -> /usr/lib/systemd/system/sysstat.service
lrwxrwxrwx. 1 root root 37  9月 14 18:02 tuned.service -> /usr/lib/systemd/system/tuned.service
lrwxrwxrwx. 1 root root 40  9月 14 17:58 vmtoolsd.service -> /usr/lib/systemd/system/vmtoolsd.service

Step 2. 特定サービスの状態確認

例えば、postfix のサービス状態を確認したいときには、以下のようにします。

  • line 3 : サービスの自動起動が有効化状態であることが分かる(enabled)
  • line 4 : サービスが稼働中であることが分かる(active・running)
サービス状態確認
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
   Active: active (running) since 火 2015-09-15 16:58:17 JST; 16min ago
  Process: 1081 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 1075 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 1059 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 1224 (master)
   CGroup: /system.slice/postfix.service
           tq1224 /usr/libexec/postfix/master -w
           tq1227 pickup -l -t unix -u
           mq1228 qmgr -l -t unix -u

 9月 15 16:58:16 localhost.localdomain postfix[1081]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/ad...tocol
 9月 15 16:58:16 localhost.localdomain postfix[1081]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/ad...tocol
 9月 15 16:58:16 localhost.localdomain postfix[1081]: postsuper: warning: inet_protocols: disabling IPv6 name/address sup...tocol
 9月 15 16:58:16 localhost.localdomain postfix[1081]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/ad...tocol
 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: warning: inet_protocols: disabling IPv6 name/address support:...ocol
 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: warning: inet_protocols: disabling IPv6 name/address support:...ocol
 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: daemon started -- version 2.10.1, configuration /etc/postfix
 9月 15 16:58:17 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
 9月 15 16:58:17 localhost.localdomain postfix/pickup[1227]: warning: inet_protocols: disabling IPv6 name/address support:...ocol
 9月 15 16:58:17 localhost.localdomain postfix/qmgr[1228]: warning: inet_protocols: disabling IPv6 name/address support: A...ocol
Hint: Some lines were ellipsized, use -l to show in full.

後、サービス状態が確認できる + 最近のログまで表示してくれるので、ちょっと便利です。

Step 3. サービス停止、及び 無効化

今度は、サービス停止・無効化 サービスを停止し、自動起動を無効にします。

  • line 4 : サービスを停止するとソフトリンクが削除される
  • line 8 : サービスの自動起動が無効化状態であること(disabled)
  • line 9 : サービスが停止中であること(inactive・dead)
サービス停止・無効化
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
# systemctl stop postfix.service

# systemctl disable postfix.service
rm '/etc/systemd/system/multi-user.target.wants/postfix.service'

# systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled)
   Active: inactive (dead)

 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 16:58:17 localhost.localdomain postfix/master[1224]: daemon started -- version 2.10.1, configuration /etc/postfix
 9月 15 16:58:17 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
 9月 15 16:58:17 localhost.localdomain postfix/pickup[1227]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 16:58:17 localhost.localdomain postfix/qmgr[1228]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 17:15:58 localhost.localdomain systemd[1]: Stopping Postfix Mail Transport Agent...
 9月 15 17:15:58 localhost.localdomain postfix[2148]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 17:15:58 localhost.localdomain postfix[2148]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 9月 15 17:15:58 localhost.localdomain systemd[1]: Stopped Postfix Mail Transport Agent.

終わりに

サービス名を入力するときに、postfix.service の代わりに、postfix だけでも動作しますが、タイプを明示的に指定した方が、はっきりして分かりやすいので、.service まで付けたほうが良いと思います。

以上、CentOS 7 サービス停止・起動・再起動方法 でした。