メインコンテンツまでスキップ

SYSTEMDによるサーバ管理

systemdの概要

SYSTEMD によるサービス管理

systemd は Linux オペレーティングシステム用のシステムおよびサービスマネージャー。
SysV init スクリプトと後方互換するように設計されており、起動時のシステムサービスの並行スタートアップやデーモンのオンデマンドのアクティベーション、システム状態のスナップショットのサポート、依存ベースのサービス管理論理などの多くの機能を提供している。
RedHatEnterpriseLinux7 では、 systemd は Upstart に代わるデフォルトの init システムです。
サービスユニットは、ファイル拡張子.service 等で終わり、init スクリプトと同様の目的を果たす。
サービスの表示、開始、停止、再開、有効化、無効化には、「service ユーティリティーと systemctl の比較」、「chkconfig ユーティリティーと systemctl の比較」、および以下で説明されているように systemctl コマンドラインを使用する。
service および chkconfig はシステム内で利用可能でまだ機能しますが、これらは互換性のために含まれており、使用の回避を推奨する

システムターゲット

systemd ターゲットを表示、変更、または設定するにはsystemctl ユーティリティーを使用します。
runlevel および telinit の各コマンドはシステムで利用可能なままで、期待どおりに機能しますが、これらが含まれているのは互換性が目的であり、使用は避けてください。

runlevelsystemd targetexample
0runlevel0.target, poweroff.targetシステムをシャットダウンし、電源を切ります。
1runlevel1.target, rescue.targetレスキューシェルを設定します。
2runlevel2.target, multi-user.target非グラフィカルな複数ユーザーシステムを設定します。
3runlevel3.target, multi-user.target非グラフィカルな複数ユーザーシステムを設定します。
4runlevel4.target, multi-user.target非グラフィカルな複数ユーザーシステムを設定します。
5runlevel5.target, graphical.targetグラフィカルな複数ユーザーシステムを設定します。
6runlevel6.target, reboot.targetシステムをシャットダウンして再起動します。

現在のデフォルトターゲットを確認

# systemctl get-default

デフォルトターゲットを変更する場合

# systemctl set-default <target name>

現在のターゲットを変更する場合

# systemctl isolate <target name>

サービスの操作

serviceコマンド比較

service commandsystemctl commandexample
service {name} startsystemctl start name.serviceサービスを開始します。
service {name} stopsystemctl stop name.serviceサービスを停止します。
service {name} restartsystemctl restart name.serviceサービスを再起動します。
service {name} condrestartsystemctl try-restart name.serviceサービスが実行中の場合のみ、再起動します。
service {name} reloadsystemctl reload name.service設定を再読み込みします。
service {name} statussystemctl status name.service, systemctl is-active name.serviceサービスが実行中かどうかをチェックします。
service --status-allsystemctl list-units --type service --allすべてのサービスのステータスを表示

chkconfig コマンド比較

chkconfigsystemctlexample
chkconfig name onsystemctl enable name.serviceサービスを有効にします。
chkconfig name offsystemctl disable name.serviceサービスを無効にします。
chkconfig --list namesystemctl status name.service, systemctl is-enabled name.serviceサービスが有効かどうかをチェックします。
chkconfig --listsystemctl list-unit-files --type serviceサービスすべてを一覧表示し、それらが有効かどうかをチェックします。

サーバ状態操作のコマンド

commandexample
systemctl haltシステムを停止します。
systemctl poweroffシステムの電源を切ります。
systemctl rebootシステムを再起動します。
systemctl suspendシステムをサスペンドします。
systemctl hibernateシステムを休止状態にします。
systemctl hybrid-sleepシステムを休止状態にしてサスペンドします。

systemdのログレベルを変更

systemd のデフォルト設定でログレベルが info に設定されていて大量のログが出るためログレベルを調整する

# vim /etc/systemd/system.conf
[Manager]
LogLevel=notice

変更の反映

# systemctl daemon-reexec