CentOS7でサービスの管理方法が変わった!

  • 320
    Like
  • 1
    Comment
More than 1 year has passed since last update.

はじめに

CentOS7になり、サービスの管理するシステムが"System V系のinit"から"Systemd"に変わったため、今までのように/etc/rc.d/init.d/sshd restartを実行することができなくなりました。

Systemdでサービスを管理できるようになるために、私が使うコマンドを中心にまとめていきます。
※ちなみに、serviceコマンドは今まで通り使える模様(systemctlへリダイレクトしてるけど)。

サービスの起動・終了

今まで/etc/rc.d/init.d/sshd restartとやっていたsshdの再起動は、systemctl restart sshd.serviceとなる。

調べていると、systemctl restart sshdと書いてあるところもありますが、1番最後の引数はUnit名を入れるという事になっているため、サービス名ではなくUnit名である"sshd.service"を指定すべきである。
(Unitについては、Google先生に聞いてください)

サービスの起動はsystemctl start sshd.service、終了はsystemctl stop sshd.serviceと、systemctlとUnit名の間にやりたいことを入れればOKです。reloadについてはUnitに記載されていれば使えるとのこと。

サービス一覧と自動起動設定の確認

サービスの自動起動設定を確認するときに使っていたchkconfig --listは、systemctl list-unit-files -t serviceとなる。
本当ならsystemctl list-unit-filesが対比的には正しいが、私の場合サービスだけを気にして使うと思うので、"-t service"を付けています。

STATEがenabledになっているのが自動起動有効のサービス。disabledは自動起動無効。staticは単体で自動起動設定ができないサービスとなる。
ScreenShot 2014-09-10 8.12.10.png

また、個別に確認したい場合は、systemctl status sshd.serviceとすれば確認できる。
"Loaded:"が出力されている行の一番最後に書かれているenableかdisableで判別できます。
このコマンドでは、他にもサービスの状態などが確認できます。
ScreenShot 2014-09-10 8.21.02.png

自動起動の設定

chkconfig sshd onに相当する自動起動の有効化はsystemctl enable sshd.serviceとなる。
chkconfig sshd offに相当する自動機能無効化はsystemctl disable sshd.serviceとなる。

Logの出力方法

SystemV系のinitでは、"/var/log"配下にrsyslog経由で吐かれていたlogが、systemdではバイナリで保存されるので"journalctl"を使って見ることになる。

使い方としては、journalctl -u sshd.serviceとなる。
他にも、"-b"を付けると、直近の起動からのログだけにしたり、"-k"を付けてdmsegと同じ内容にしたり(エラーが赤く出るようになってるのでわかりやすくなってる)、"-f"を付けてtail -fのようにリアルタイムな表示ができるようにと、それなりにオプションがあります。

おわりに

私が使う分ではこんな感じでしょう。
他にもSystemdになって変更になってる箇所がありますが、今回はピックアップしません。Google先生に聞いてください。