CentOS 7のシステム管理「systemd」をイチから理解する:CentOS 7で始める最新Linux管理入門(2)(3/4 ページ)
「systemd」は、Linuxの起動処理やシステム管理を行う仕組みです。systemdはinitの限界を克服するために作られた新しいシステム管理アーキテクチャで、CentOS 7でも用います。では、何が違うのでしょう。これまで使われてきた「init」と比較しながら、基礎と課題を解説します。
initとsystemdを比較 同等のコマンドでも出力が異なるものが多くある
Unitの自動起動登録と解除
では、initとsystemdで代表的なコマンドの違いを比較します。httpdをシステム起動時に立ち上がるサービスとして登録したい場合、それを解除したい場合の「Unitの自動起動登録」を例にします。
Unitの自動起動登録と解除 (例:httpd.serviceの場合) |
init | systemd |
---|---|---|
登録 | chkconfig httpd on | systemctl enable httpd |
解除 | chkconfig httpd off | systemctl disable httpd |
initではchkconfig httpd onとしますが、systemdではsystemctl enable httpdとなります。
再度systemctl list-unit-filesで調べると、先ほどのdisabledからenabledに変わっていることが分かります。
$ systemctl list-unit-files | grep httpd httpd.service enabled
登録を解除するコマンドも、initではchkconfig httpd offですが、systemdではsystemctl disable httpdになります。同じくsystemctl list-unit-filesで調べると、httpd.serviceはdisabledに表示が変わりました。
$ systemctl list-unit-files | grep httpd httpd.service disabled
Unitの有効/無効を確認する
Unitの有効/無効を確認するにはどうでしょう。「rsyslog」の有効/無効を確認する場合を例にします。
Unitの有効/無効を確認(例:rsyslog) | init | systemd |
---|---|---|
chkconfig rsyslog --list | systemctl is-enabled rsyslog |
それぞれ以下のように表示されます。
- init
# chkconfig rsyslog --list rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- systemd
# systemctl is-enabled rsyslog enabled
Unitを起動する
サービスを起動をする場合の表示も以下のように違います。httpdを起動する際のコマンド例を以下に記載します。
- init
# /etc/init.d/httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using c6.ec2.tokyo for ServerName [ OK ] #
- systemd
# systemctl start httpd # (何も表示されない)
Unitの起動状態を確認する
起動状態の確認は、それぞれ以下のコマンドで確認します。以下は、httpdの起動状態確認を行った場合のコマンドおよび表示の例です。
- init
# /etc/init.d/httpd status httpd (pid 1649) is running...
- systemd
# systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled) Active: active (running) since Sun 2015-12-13 20:06:39 JST; 1min 24s ago Main PID: 1483 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service |-1483 /usr/sbin/httpd -DFOREGROUND |-1484 /usr/sbin/httpd -DFOREGROUND |-1485 /usr/sbin/httpd -DFOREGROUND |-1486 /usr/sbin/httpd -DFOREGROUND |-1487 /usr/sbin/httpd -DFOREGROUND `-1488 /usr/sbin/httpd -DFOREGROUND Dec 13 20:06:39 c7.ec2.tokyo systemd[1]: Starting The Apache HTTP Server... Dec 13 20:06:39 c7.ec2.tokyo systemd[1]: Started The Apache HTTP Server.
Unitを停止する
サービスを停止する場合は、それぞれ以下のコマンドで確認します。例は同じくhttpdの場合です。
- init
# /etc/init.d/httpd stop Stopping httpd: [ OK ] #
- systemd
# systemctl stop httpd # (何も表示されない)
Unitを再起動する
サービスを再起動するには、それぞれ以下のコマンドを入力します。例は同じくhttpdの場合です。
- init
# /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using c6.ec2.tokyo for ServerName [ OK ] #
- systemd
# systemctl restart httpd # (何も表示されない)
Unitを強制終了する
サービスを強制終了するには、それぞれ以下のコマンドを入力します。例は同じくhttpdの場合です。
- init
# /etc/init.d/httpd status httpd (pid 24111) is running... # kill 24111 # /etc/init.d/httpd status httpd dead but subsys locked
- systemd
# systemctl kill httpd # (何も表示されない)
initでは、pidを確認して、該当するpidを指定してkillする必要があります。一方のsystemdは、Unit名を指定すればkillできます。
このように、initとsystemdではサービスの管理単位や管理方式が異なることから、同等のコマンドでも出力が異なるものが多くあります。systemdはまだ未成熟である印象を受けますし、実際のオペレーションでは慣れが必要だと思います。
一方でsystemdは、より高度な管理オプションが用意されている、コマンド体系が統一感のある記述となっているなど、改良されている部分もあります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Linux起動の仕組みを理解しよう[init/inittab編]
カーネルが呼び出されてからログインプロンプトが表示されるまでの間に、一体どのような処理が行われているのか。これを理解するには、この部分の全般をつかさどるinitとその設定ファイルであるinittabがカギとなる。 - エンタープライズでもInfrastructure as Code――Chef 12/Chef-Zero/Knife-Zeroの基礎知識とインストール
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。初回は、Chef 12、Chef Solo、Chef Server、Chef-Zero、Knife-Solo、Knife-Zeroの概要と、Chef-ZeroをKnife-Zero経由で利用するCookbook開発環境の構築について解説します。 - Linuxで作るファイアウォール[パケットフィルタリング設定編]
いよいよパケットフィルタリングの設定を始める。しっかりと不要なパケットをブロックできれば、ファイアウォールの内側の安全度はより向上する。パケットの性質やiptablesの動作をここでマスターしてほしい。 - アクセス制限の設定とCentOSのアップデート
前回はsshでVPSにログインして、一般ユーザーを作成しました。今回は、アクセス制限、パケットフィルタリングといった不正アクセス対策の設定をしてから、CentOSをアップデートします(編集部) - 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - 無線LAN接続の設定を操作するには? iwconfigコマンドの使い方
無線LANインターフェースがカーネルまたはモジュールでサポートされていれば、アクセスポイントとIPアドレスを設定する程度で接続できます。「iwconfig」は、アクセスポイントへの接続に必要なESSIDおよび暗号化キーを登録するときに利用するコマンドです。 - NginxをWebサーバー“以外”でも徹底活用する
Nginxは高速化だけではありません。Webサーバー以外への応用事例として、ロードバランサー、HTTPS対応、WAFとしての利用を紹介します。