RHEL6→RHEL7で変更された主要コマンド(サービス系)

サービス系コマンド

■サービス逐次起動系

処理内容 RHEL 6 RHEL 7
状態の表示(サービス単位) /sbin/service

[1]service_name status
/usr/bin/systemctl status unit_name
状態の表示(全サービス) /sbin/service –status-all /usr/bin/systemctl list-units

[2]–type service
起動 /sbin/service service_name start /usr/bin/systemctl start unit_name
終了 /sbin/service service_name stop /usr/bin/systemctl stop unit_name
強制終了 kill -9 PID /usr/bin/systemctl kill -s 9 unit_name
再起動 /sbin/service service_name restart /usr/bin/systemctl restart unit_name
設定反映 /sbin/service service_name reload /usr/bin/systemctl reload unit_name

[1]/etc/init.d/service_nameでも同様

[2]list-unitsは省略可

■サービス自動起動系

処理内容 RHEL 6 RHEL 7
(全サービス)定義の表示 ls /etc/init.d/ /usr/bin/systemctl list-unit-files –type service
(サービス単位の)定義の登録 /sbin/chkconfig –addservice_name /usr/bin/systemctl daemon-reload

[3]
自動起動の確認 /sbin/chkconfig –listservice_name /usr/bin/systemctl is-enabled unit_name
自動起動の有効化 /sbin/chkconfig service_name on /usr/bin/systemctl enable unit_name
自動起動の無効化 /sbin/chkconfig service_name off /usr/bin/systemctl disable unit_name

[3]Unitファイルを再読み込みすることにより登録される

systemdでは、「Unit」という単位でさまざまな処理を行います。従来のサービスに相当する処理は「.service」という拡張子がつくファイルとして管理されており、サービス関連の処理を行うときは、この名前を指定します。Unitには、ほかにもマウントポイントの処理を行う「.mount」、デバイスの処理を行う「.device」、Unitをグループ化する「.target」などがあります。

また、自動起動の登録を行ったUnitは、「/usr/lib/systemd/system/unit_name」内の[Install]セクションのWantedByオプションで指定されているUnitのディレクトリ(例:/etc/systemd/system/multi-user.target.wants/)にシンボリックリンクが張られることにより、自動起動が有効となります。

RHEL 6と同じコマンドを利用したい方は……

Red Hat Enterprise Linux 7のserviceコマンドやchkconfigコマンドは、systemctlコマンドにリダイレクトするシェルスクリプトとなっているのでそのまま利用できます。

ただし、chkconfig –listについては、出力結果にも注意書きがあるとおり、一部のサービスしか表示されないため注意が必要です。


ランレベル系コマンド

Red Hat Enterprise Linux 7では、従来のランレベルに相当する起動モードも「.target」という拡張子がつくUnitで管理されるようになっています。これまでのランレベルとの対応は、下記のとおりです。なお、targetファイルを自作して、独自の起動モードを利用することも可能です。

RHEL 6のランレベル 内容 RHEL 7のtarget名
0 システム停止 poweroff.target
1 シングルユーザモード rescue.target
3 マルチユーザモード multi-user.target
5 グラフィカルモード graphical.target
6 再起動 reboot.target
N/A 緊急モード emergency.target

通常の起動の際は、いずれかのtargetへのシンボリックリンク(通常はmulti-user.targetかgraphical.target)となっているdefault.targetが参照されます。

ランレベル系コマンドの一覧は下記のとおりです。

処理内容 RHEL 6 RHEL 7
起動モードの変更 telinit runlevel systemctl isolate target_name
標準起動モードの変更 /etc/inittabの編集 sudo systemctl set-default target_name

RHEL 6と同じコマンドを利用したい方は……

現在と1つ前のランレベルを表示するrunlevelコマンド、ランレベルを一時的に変更するtelinit(init)コマンドも利用できます。ただし、/etc/inittabは、ファイルそのものはあるもののコメントだけとなっているため、標準起動モードの変更については、systemctl set-default target_nameの実行が必要なようです。


ログ確認系コマンド

systemd によって起動されたUnitのログは、/var/log/journal以下にバイナリ形式で保存されるようになっています。そのため、ログの確認にはjournalctlコマンドを利用します。

ログ確認系コマンドの一覧は下記のとおりです。

処理内容 RHEL 6 RHEL 7
(サービス単位の)ログ確認 cat /var/log/service_name journalctl -u unit_name
ログの更新監視 tail -f /var/log/service_name journalctl -f -u unit_name
起動ログの確認 dmesg journalctl –dmesg

journalctlによる表示には、デフォルトでページャ(less)で表示されます。パイプ処理などでページャを利用したくない場合は、–no-pagerオプションを付加します。また、–sinceオプションで相対時間(例:30 min ago)、絶対時間(2015-04-30)以降のログ出力、–outputオプションでJSONなどの各種形式で出力、-bオプションでN世代前のブートログ表示など、数多くの機能を備えています。

ただし、デフォルト設定のままの場合、/run/systemd/journal以下にログが書き込まれ、再起動すると消えてしまうので注意が必要です。再起動後もログを残すには、/var/log/journalを作成して、journaldの再起動(systemctl restart systemd-journald)を行う必要があります。

RHEL 6と同じコマンドを利用したい方は……

Red Hat Enterprise Linux 7では、rsyslogが稼働しており、journaldからsyslog関連のログが転送されています。そのため、これまでのテキスト形式のログも任意のコマンドで参照できます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする