systemdを使用したシステムの管理

Oracle Linuxでのsystemdの役割と、その構成およびユニットがシステムの起動をどのように形作るかについて説明します。

systemdは、Oracle Linuxのシステム初期化およびサービス・マネージャです。

systemdデーモンは、システム・ブート後に開始する最初のプロセスであり、システムの停止時に実行される最後のプロセスです。systemdは、ブートの最終段階を制御し、システムを使用できるように準備します。また、サービスの同時ロードを実行し、起動を高速化します。

ヒント

Oracle LinuxでのsystemDの操作に関するハンズオン・チュートリアルおよびビデオ・デモについては、Oracle LinuxでのSystemdの使用に関する項を参照してください。

システムブートの詳細は、Managing Kernels and System Boot on Oracle Linuxを参照してください。

systemd構成

systemdは、次のディレクトリにあるファイルから、優先度の順に構成を読み取ります。

  • $HOME/.config/systemd/: ユーザー固有のsystemd構成エントリ。

  • /etc/systemd/: システム全体のsystemd構成のカスタマイズ。

  • /run/systemd/: 実行時のsystemd構成。

  • /usr/lib/systemd: パッケージによって提供されるベースsystemd構成。

systemd構成のカスタマイズは、/etc/systemdディレクトリに格納されます。たとえば、/usr/lib/systemd/system.conf/etc/systemd/system.confファイルにコピーして編集し、systemdによるシステム初期化の処理方法を制御できます。

systemdデーモンは、シンボリック・リンク/etc/systemd/system/default.targetを読み取ることで、ブート・プロセス中にサービスを開始します。

次の例は、グラフィカル・ユーザー・インタフェースを使用せずにマルチ・ユーザー・モードで起動するように構成されたシステム上の/etc/systemd/system/default.target(multi-user.targetとと呼ばれるターゲット)の値です。

sudo ls -l /etc/systemd/system/default.target
 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target 
ノート

カーネル・ブート・パラメータを使用して、デフォルトのシステム・ターゲットをオーバーライドできます。Changing Kernel Boot Parameters Before Bootingおよび Using grubby to Manage Kernelsを参照してください。

systemdユニット

主要なsystemdユニット・タイプ、それらのリスト方法および構成ファイルの格納場所の概要を示します。

systemdは、管理する様々なタイプのリソースをユニットに編成します。

多くのユニットは、システムのニーズに応じてこれらのユニットを構成できるユニット構成ファイルで構成されます。ファイルに加えて、systemdランタイム・コマンドを使用してユニットを構成することもできます。

systemdで使用可能なすべてのタイプのユニットを表示するには、次のコマンドを使用します。

sudo systemctl -t help
Available unit types:
service
mount
swap
socket
target
device
automount
timer
path
slice
scope

次のリストでは、systemdを使用してOracle Linuxシステムで管理できるいくつかのシステム・ユニットについて説明します:

サービス
サービス・ユニットの構成ファイルのファイル名は、service_name.serviceです(sshd.servicecrond.servicehttpd.serviceなど)。

サービス・ユニットは、デーモンおよびデーモンを構成する各プロセスを起動、管理します。

次の例は、Apache HTTPサーバーhttpd.servicesystemdサービス・ユニットを開始する方法を示しています。

sudo systemctl start httpd.service

詳細は、SystemdのService Managementを参照してください。

ターゲット
ターゲット・ユニットの構成ファイルのファイル名は、target_name.targetです(graphical.targetなど)。

ターゲットは実行レベルと似ています。リソースが構成されると、ブート・プロセス中にシステムが別のターゲットに到達します。たとえば、システムはターゲットnetwork-online.targetに到達する前にnetwork-pre.target に達します。

多くのターゲット・ユニットには依存関係があります。たとえば、graphical.targetのアクティブ化(グラフィカル・セッションの場合)は、multi-user.target (マルチユーザー・システムの場合)もアクティブでないかぎり失敗します。

詳細は、「Systemdターゲット」を参照してください。

ファイルシステムのマウントポイント
マウント・ユニット構成ファイルのファイル名の形式は、mount_point_name.mountです。
マウント・ユニットを使用すると、ブート時にファイル・システムをマウントできます。たとえば、次のコマンドを実行して、起動時に一時ファイル・システム(tmpfs)を/tmpにマウントできます。
sudo systemctl enable tmp.mount
デバイス
デバイス・ユニット構成ファイルのファイル名の形式は、device_unit_name.deviceです。

デバイス・ユニットには、制御する/sysおよび/devパスに基づいて名前が付けられます。たとえば、デバイス/dev/sda5はsystemdでdev-sda5.deviceとして公開されます。

デバイス・ユニットを使用すると、デバイスベースのアクティブ化を実装できます。

ソケット
ソケット・ユニット構成ファイルのファイル名の形式は、socket_unit_name.socketです。

各*.socketファイルには、ソケット上の受信トラフィックで開始するようサービスを構成するために、対応する*.serviceファイルが必要。

ソケット・ユニットを使用すると、ソケットベースのアクティブ化を実装できます。

タイマー

タイマー・ユニット構成ファイルのファイル名の形式は、timer_unit_name.timerです。

各*.timerファイルには、構成されたタイマー・イベントで開始するようサービスを構成するために、対応する*.serviceファイルが必要。必要に応じて、Unit構成エントリを使用して、タイマー・ユニットとは異なる名前のサービスを指定できます。

タイマー・ユニットは、サービス・ユニットの実行時期を制御でき、cronデーモンを使用する代替手段として機能できます。タイマー・ユニットは、カレンダ時間イベント、モノトニックな時間イベントに対して構成でき、非同期に実行できます。

詳細は、Working with Timers in Systemdを参照してください。

systemdユニット構成ファイルへのパスは、その目的、およびsystemdが'user'モードと'system'モードのどちらで実行されているかによって異なります。

たとえば、パッケージからインストールされたユニットの構成は/usr/lib/systemd/systemまたは/usr/local/lib/systemd/systemで使用でき、ユーザー・モードの構成ユニットは$HOME/.config/systemd/userに格納される可能性があります。詳細は、systemd.unit(5)マニュアル・ページを参照してください。