systemd
の基本
- 概要
systemd
は、システム設定とサービスを管理する場合に使用します。systemd
は、タスクを「ユニット」と呼ばれるコンポーネントに編成し、ユニットのグループを「ターゲット」に編成します。- 目的
systemd
の基本について習得します。これには、サービス管理、依存関係の追跡、ログ記録、リソース管理、ソケットの有効化、システム制御などの重要な機能が含まれます。- 所要時間
理解に20分ほどを要します。
- 要件
Linuxコマンドの基本的な理解
Linuxのプロセス、デーモン、およびコントロールグループの基本的な理解
1 systemd
とは #
systemd
は、Linuxオペレーティングシステムのシステムおよびサービスマネージャです。主要なLinuxディストリビューションでデフォルトの初期化システムです。systemd
は、ユーザが直接開始するのではなく、/sbin/init
を介してインストールされ、初期ブート中に起動されます。systemd
は、ブート時に最初のプロセス(PID 1)として実行されたときにユーザスペースサービスを起動および維持するinitシステムとして機能します。PID 1はinitと呼ばれ、最初に作成されるLinuxユーザモードプロセスです。その実行はシステムのシャットダウンまで継続します。
systemd
はPID 1を所有し、カーネルによって直接起動されます。他のすべてのプログラムは、systemd
またはそのいずれかの子プロセスによって直接起動します。systemd
は、ホストのファイルシステムをマウントし、一時ファイルを管理します。SysV initスクリプトとの下位互換性があります。SysVは、systemd
よりも以前の初期化システムです。
systemd
では、ユニットとは、システムが操作および管理方法を認識しているリソースのことです。これは、systemd
ツールで使用されるプライマリオブジェクトです。これらのリソースは、設定ファイルであるユニットファイルで定義します。
systemctl
は、initシステムを制御する中央管理ツールです。systemd
システムおよびサービスマネージャの状態を調べ、制御するために使用されます。
systemd
でいうターゲットとは、システムのブート中に同期ポイントとして機能する関連ユニットのグループです。ターゲットのユニットファイルの拡張子は.target
です。ターゲットのユニットは、依存関係の連鎖を通じてさまざまなsystemd
ユニットをまとめたものです。
トラブルシューティングにはjournalctl
を使用できます。これを使用して、systemd
ジャーナルからのログメッセージを問い合わせたり、表示したりします。
systemd
の詳細については、https://systemd.ioおよびman 1 systemd
を参照してください。
2 systemd
のブートプロセスについて #
ブートプロセスの最初の手順は、LinuxオペレーティングシステムのメインコンポーネントであるLinuxカーネルをロードすることです。ロードされると、カーネルはハードウェアを初期化し、システムで実行される最初のプロセスであるsystemd
プロセスを開始します。
2.1 Linuxのブートプロセス #
Linuxのブートプロセスは、オペレーティングシステムの起動の初期ステージです。これは、オペレーティングシステムがメモリをロードし、コンポーネントを初期化してユーザアプリケーションの実行を準備するプロセスです。
Linuxのブートプロセスは次の4つの主要なステージに分けられます。
- ステージ1: BIOS
コンピュータの電源をオンにすると、コンピュータはBIOS (Basic Input/Output System)を起動し、POST (Power On Self Test)を実行します。POSTは、ハードディスク、SSD、キーボード、RAM、USBポートなどのコンポーネントやその他のハードウェアの機能を検査する整合性チェックです。ハードウェアが期待どおりに動作する場合、ブートプロセスは次のステージに進みます。
- ステージ2: ブートローダ
POSTが完了すると、BIOSはMBR (マスターブートレコード)に保存されているブートローダプログラムを検索してロードします。MBRは512バイトのコードで、通常はハードドライブのアーキテクチャに応じて
/dev/sda
または/dev/hda
に配置されています。MBRは、LinuxのライブUSBまたはDVDインストール上に配置することもできます。BIOSは、このMBRコードをロードして実行します。Linuxには、主要なブートローダとしてLILO、GRUB、およびGRUB2の3つがあります。GRUB2 (Grand Unified Bootloader)ブートローダは、最新のLinuxディストリビューションにおける最新のプライマリブートローダです。GRUB2の設定ファイルは
/boot/grub2/grub2.cfg
にあります。BIOSは、GRUB2ブートローダを見つけると、GRUB2を実行してメインメモリ(RAM)にロードします。- ステージ3: Linuxカーネルの初期化
Linuxカーネルは、オペレーティングシステムの心臓部です。Linuxシステムでは、カーネルはハードウェアとのインタフェースとして機能し、メモリ管理を制御し、プロセスを管理します。ブートローダは、選択したLinuxカーネルをロードします。カーネルは、圧縮されたバージョンから自己抽出され、ルートファイルシステムをマウントします。その後、
/sbin/init
プログラムを実行します。- ステージ4:
systemd
カーネルは、Linuxオペレーティングシステムのシステムおよびサービスマネージャである
systemd
をロードします。続いて、systemd
が他のすべての初期化プロセスを実行します。
2.2 systemd
によるブートプロセス #
カーネルがsystemd
をロードすると、systemd
が処理を引き継ぎ、システムを稼働させるために必要な他のシステムサービスを開始します。これには、ネットワーキングサービス、ログインマネージャなどのサービスが含まれます。
ブートプロセスは、特定のターゲットユニットの実行順に並列化されます。systemd
は、/etc/systemd/system/default.target
ファイルを使用して、Linuxシステムをブートするターゲットを判断します。このファイルは、グラフィカルログインマネージャをブートするgraphical.target
へのリンクになっています。systemd
は、default.target
の依存関係であるすべてのターゲットユニットを有効にし、さらにこれらの依存関係の依存関係すべてを再帰的に有効にします。すべてのサービスが開始されると、システムの使用準備が整い、ログインマネージャが表示されます。これで、システムにログインして、システムの使用を開始できるようになります。
2.3 systemd-analyze
コマンドによるシステムブートプロセスのパフォーマンスの分析 #
systemd-analyze
コマンドを使用して、システムブートプロセスのパフォーマンスを分析します。また、システムおよびサービスマネージャから他の状態情報やトレース情報を取得することもできます。このコマンドを使用して、ユニットファイルが正しいことを確認したり、システムマネージャの高度なデバッグに役立つ特別な機能にアクセスしたりします。
次に例を示します。
- システムのブートにかかる時間の表示
>
systemd-analyze time Startup finished in 3.404s (kernel) + 2.415s (initrd) + 13.125s (userspace) = 18.945s graphical.target reached after 13.117s in userspace- ブートプロセスの概要の取得(開始されているサービスや、各サービスの開始にかかる時間など)
>
systemd-analyze critical-chain The time when unit became active or started is printed after the "@" character. The time the unit took to start is printed after the "+" character. graphical.target @13.117s └─multi-user.target @13.117s └─getty.target @13.117s └─getty@tty1.service @13.116s └─plymouth-quit-wait.service @10.775s +2.338s └─systemd-user-sessions.service @10.769s +3ms └─remote-fs.target @10.764s └─iscsi.service @10.747s +16ms └─network-online.target @10.744s └─NetworkManager-wait-online.service @1.547s +9.197s └─NetworkManager.service @1.507s +37ms └─network-pre.target @1.504s └─wpa_supplicant.service @2.341s +5ms └─dbus.service @1.042s └─basic.target @1.036s └─sockets.target @1.036s └─snapd.socket @1.035s +590us └─sysinit.target @1.030s └─systemd-update-utmp.service @1.025s +5ms └─auditd.service @976ms +47ms └─systemd-tmpfiles-setup.service @964ms +9ms └─local-fs.target @962ms └─snapd.mounts.target @961ms └─snap-core18-2796.mount @417ms +543ms └─dev-loop9.device @961ms +628usこのコマンドは、指定した各ユニットまたはデフォルトのターゲットについて、タイムクリティカルなユニットのツリーを出力します。サービスの初期化は、ソケットの有効化とユニットの並列実行に依存する場合があります。
blame
コマンドと同様に、ユニットの有効化にかかる時間を表示します。これは、アクティブ状態に直接移行するデバイスユニットなどのユニットでは定義されていません。- ブートプロセス中に開始されたサービスのリストの表示(各サービスにかかった時間順に表示される)
>
systemd-analyze blame 9.197s NetworkManager-wait-online.service 4.002s fwupd.service 2.338s plymouth-quit-wait.service 1.282s dracut-pre-udev.service 1.062s sys-devices-platform-serial8250-tty-ttyS0.device 1.062s dev-ttyS0.device 1.061s dev-ttyS1.device 1.061s sys-devices-platform-serial8250-tty-ttyS1.device 1.060s dev-ttyS11.device 1.060s sys-devices-platform-serial8250-tty-ttyS11.device 1.059s sys-devices-platform-serial8250-tty-ttyS13.device 1.059s dev-ttyS13.device 1.059s sys-devices-platform-serial8250-tty-ttyS10.device 1.059s dev-ttyS10.device 1.058s sys-devices-platform-serial8250-tty-ttyS14.device 1.058s dev-ttyS14.device 1.058s dev-ttyS12.device 1.058s sys-devices-platform-serial8250-tty-ttyS12.device 1.056s sys-devices-platform-serial8250-tty-ttyS17.device他のサービスの初期化が完了するまで待つために、あるサービスの初期化が遅くなることがあります。このコマンドを使用して、ユニットの有効化にかかる時間を表示します。これは、アクティブ状態に直接移行するデバイスユニットなどのユニットでは定義されていません。
Type=simple
であるサービスの結果は表示されません。systemd
は、これらのサービスは直ちに開始されると見なすので、初期化の遅延を分析できないためです。- ブートプロセス中に発生するイベントを表示するベクタグラフィックファイルの生成
>
systemd-analyze plot > /temp/sample.svgこのコマンドは、
temp
ディレクトリにSVGファイルを作成します。SVGファイルは、一連のグラフィックベクタを定義したテキストファイルで、LibreOffice Drawなどのアプリケーションでグラフを生成するために使用されます。
3 ユニットファイルの構造 #
systemd
では、ユニットとは、システムが操作および管理方法を認識しているリソースを指します。これは、systemd
ツールで使用されるプライマリオブジェクトです。これらのリソースは、設定ファイルであるユニットファイルを使用して定義します。systemd
を使用する作業では、ユニットファイルを理解していると管理が容易になります。ユニットファイルではシンプルな宣言型の構文を使用するので、有効化したときにユニットの目的と効果を簡単に確認できます。ユニットファイルには、次のようにディレクティブを記述したセクションがあります。
[Section] Directive1=value Directive2=value . . .
各タイプのユニットファイルには以下のセクションがあります。
-
[Unit]
ほとんどのユニットファイルの先頭には
[Unit]
セクションがあります。このセクションを使用して、ユニットファイルのメタデータを定義し、ユニットファイルの他のユニットファイルとの関係を設定します。このセクションは、ユニットファイルの概要を記述していることから通常は先頭に配置されます。-
[Automount] / [Mount] / [Path] / [Service] / [Slice] / [Socket] /[Swap] / [Timer]
ユニットファイルのタイプごとに固有のディレクティブを記述したセクションです。使用可能なすべてのユニットファイルのタイプについては4項 「ユニットファイルのタイプ」を参照してください。タイプ
device
、target
、snapshot
、およびscope
には、タイプ固有のセクションがないことに注意してください。-
[Install]
これは多くの場合、ユニットファイルの最後のセクションであり、オプションです。このセクションを使用して、ユニットファイルが有効または無効なときのその動作を定義します。ユニットファイルを有効にすると、そのファイルはブート時に自動的に起動します。特定のユニットでは、適切に動作するために他の関連ユニットとの依存関係を持っていることがあります。たとえば、
chrony
にはディレクティブAfter
、Wants
、およびBefore
が必要で、これらはすべてchrony
が動作するための依存関係です。
systemd
のサービスファイル #[Unit] Description=usbguard 1 [Service] ExecStart=/usr/sbin/usb-daemon 2 [Install] WantedBy=multi-user.target 3
4 ユニットファイルのタイプ #
ファイル拡張子でユニットのタイプを判断できます。systemd
では、記述されたリソースのタイプによってユニットが分類されています。
systemd
で使用可能なユニットファイルのタイプは次のとおりです。
-
.service
サービスやアプリケーションをどのように管理するかを記述します。これには、サービスの開始または停止方法、設定ファイルの再ロード方法(該当する場合)、サービスを自動的に開始する条件、関連するユニットファイルの依存関係または階層情報が含まれます。
-
.scope
このユニットファイルは、
systemd
によって、D-Busインタフェースから受信した情報から自動的に作成され、外部で作成された一連のシステムプロセスを管理するために使用されます。-
.path
パスを使用した有効化で使用するパスを定義します。デフォルトでは、ファイル名のベース名が同じ
.service
ユニットファイルが有効になります。inotify
は、ファイルの変更に関する通知を受け取る必要があるプログラムで使用するカーネルAPIです。-
.snapshot
systemctl snapshot
コマンドによって.snapshot
ユニットファイルが自動的に作成されます。このコマンドでは、システムの現在の状態を表す一時的なスナップショットが作成されます。システムを変更するとその現在の状態を変更できます。一時的な状態のロールバックにはスナップショットを使用します。-
.timer
systemd
で管理するタイマを定義します。このタイマは、遅延または実行スケジュールを設定した有効化で使用するcronジョブに似ています。このタイマが設定値に達すると、ベース名が同じでファイル拡張子が.service
であるユニットファイルが起動します。-
.slice
Linuxのコントロールグループのノードを関連付けます。これにより、スライスに関連付けたプロセスへのリソース割り当てやリソース制限ができます。この名前は、コントロールグループツリーにおける階層を示します。ユニットは、そのタイプに応じてデフォルトでスライスに配置されます。
-
.target
ブート時または状態の変更時に他のユニットと同期状態にするか、システムを新しい状態にします。他のユニットでは、ターゲットの操作と同期するためにターゲットとの関係を指定します。
-
.socket
ソケットベースの有効化で
systemd
が使用するネットワーク、IPCソケット、またはFIFOバッファを記述します。このユニットで定義したソケット上でアクティビティが確認されると起動する.service
ファイルがあります。-
.device
ファイルシステム
udev
またはsysfs
でsystemd
による管理が指示されているデバイスを定義します。すべてのデバイスに.device
ファイルが存在するわけではありません。デバイスの順序指定、マウント、またはアクセスで、このユニットファイルが必要です。-
.swap
システムのスワップ空間を定義します。ユニットファイルの名前は、この空間のデバイスまたはファイルパスを反映している必要があります。
-
.mount
systemd
で管理するシステムのマウントポイントを定義します。このファイルには、スラッシュをダッシュに変更したマウントパスに基づく名前が割り当てられます。/etc/fstab
のエントリには、自動的に作成されたユニットを指定できます。-
.automount
自動的にマウントされるマウントポイントを定義します。参照するマウントポイントに基づくファイル名をファイルに割り当てます。マウントの詳細を定義するには、ベース名が同じ
.mount
ユニットファイルが必要です。
5 ユニットの依存関係と順序 #
systemd
には2種類の依存関係があります。要件の依存関係と順序の依存関係です。要件の依存関係では、ユニットを有効にするときに他のどのユニットを開始または停止するかを指定します。順序の依存関係では、ユニットを開始する順序を指定します。
ユニットの依存関係
ユニットファイルには依存関係の機能があります。ユニットを実行するために、他のユニットが1つ以上必要な場合があります。これらの依存関係は、ディレクティブWants
とRequires
を使用してユニットファイルに設定します。
-
Wants
たとえば、ユニットAに
Wants=unit B
を記述している場合、ユニットAを実行するとユニットBも実行されます。ただし、ユニットBが正常に開始しなくても、正常に実行されているユニットAには何の影響もありません。-
Requires
ユニットAに
Requires=unit B
を記述している場合、両方のユニットが実行されますが、ユニットBが正常に実行されないとユニットAは無効になります。ユニットAのプロセスが正常に実行されているかどうかは関係ありません。
ユニットの順序
適切な指示がない場合、systemd
ではグループに属するユニットを同時に実行できます。正しい順序でサービスを開始することは、Linuxシステムが適切に機能するうえで重要です。ユニットファイルディレクティブBefore
とAfter
を使用して順序を設定できます。
-
Before
たとえば、ユニットAに
Before=unit B
を記述している場合、両方のユニットを実行すると、ユニットAが正常な実行状態になってからユニットBが実行されます。-
After
ユニットAに
After=unit B
を記述している場合、両方のユニットを実行すると、ユニットBが正常な実行状態になってからユニットAが実行されます。
6 ログ記録 #
ログファイルとジャーナルは、システム管理者にとって重要です。これらはシステムに関する詳細な情報を提供し、トラブルシューティングと監査において非常に重要です。ログファイルには、カーネル、アプリケーション、およびシステムにログインするユーザによって生成されたイベントとメッセージが含まれています。journalctl
コマンドを使用してジャーナルに問い合わせることができます。このコマンドによって、systemd
で収集されたログが表示されます。systemd-journald
サービスはsystemd
のログ収集を扱います。systemd-journald
は、イベントとメッセージをバイナリ形式で保存します。
7 systemd
のターゲット #
systemd
は、ユニットとターゲットを使用します。systemd
ユニットは、システム上のサービスまたはアクションを定義し、名前、タイプ、および設定ファイルで構成されます。systemd
ターゲットは、複数のユニットを組み合わせて、ターゲットを達成するにはどのサービスを開始する必要があるかを定義します。たとえば、サーバの場合、これはネットワークが実行されていて複数のユーザがログインできる状態です。これらのファイルは、サフィックス.target
で識別できます。
ユニットファイルと同様に、さまざまなターゲットを依存関係でネストできます。たとえば、multi-user.target
では、(特に)ログインおよびユーザセッションサービスを設定するターゲットが必要です。
systemd
の一般的なターゲット
-
default.target
デフォルトでブートします。
default.target
ファイルは、デスクトップワークステーションのgraphical.target
など、真のターゲットファイルへのシンボリックリンクです。サーバの場合、通常はgraphical.target
です。-
poweroff.target
システムをシャットダウンして、電源をオフにします。
-
rescue.target
ベースシステムをプルして、レスキューシェルセッションを開始するターゲットユニット。
-
multi-user.target
グラフィカルではない(コンソール)マルチユーザシステムをセットアップします。
-
graphical.target
ネットワークサービスを備えたグラフィカルマルチユーザシステムを使用します。
-
reboot.target
システムをシャットダウンして再起動します。
systemd
ターゲットの詳細については、man 5 systemd.targetおよびman 7 systemd.specialを参照してください。
8 通常のユーザとしてのsystemd
の使用 #
セキュリティを強化する場合や、root
ユーザ特権がない場合、systemd
を通常のユーザとして使用できます。非特権サービスを実行するには、user
サービスを作成します。
ユーザサービスを作成および使用する際には、次の点を考慮してください。
ユーザサービスセッションは、ユーザのセッションが終了すると終了します。
loginctl enable-linger USERNAME
コマンドを使用することで、この設定を無効にすることができます。ユーザサービスファイルは、
/etc/systemd/user
または$HOME/.config/systemd/user/
にあります。systemctl --user
コマンドを使用してユーザサービスを制御できます。
9 systemctl
コマンド #
systemctl
コマンドは、systemd
およびサービスマネージャの状態を調べ、制御するために使用されます。
次の一般的なsystemctl
コマンドを使用できます。man systemctlのページを参照してください。
9.1 systemd
の情報の表示 #
systemd
コンポーネントに関する情報を表示するには、次のコマンドを使用できます。
- systemctl list-units
systemd
ユニットを一覧表示します。オプションの引数--state=running
を使用するとアクティブなユニットを表示し、--type=service
を使用すると、終了したアクティブなユニットを表示できます。- systemctl list-unit-files
systemd
のユニットとステータスを一覧にします。ステータスには、静的、生成済み、無効、エイリアス、マスク、有効などがあります。- systemctl list-dependencies
依存関係ツリーを一覧表示します。
- systemctl list-dependencies UNIT_FILE
ユニットファイルの依存関係を一覧表示します。
9.2 systemd
サービスの管理 #
systemctl
コマンドでは、サービスに関する次のタスクを実行できます。
- systemctl status SERVICE
特定のサービスの状態を確認します。
- systemctl show SERVICE
サービス情報を表示します。
- systemctl start SERVICE
サービスを手動で開始する代わりに
start
コマンドを使用します。設定ファイルの記述を変更した場合は、関連するサービスを開始する必要があります。- systemctl stop SERVICE
実行している特定のサービスを停止します。
- systemctl restart SERVICE
サービスを手動で再開する代わりに
restart
コマンドを使用します。設定ファイルの記述を変更した場合は、関連するサービスを再開する必要があります。- systemctl enable SERVICE
ブート時にサービスを有効にします。
- systemctl disable SERVICE
ブート時にサービスを無効にします。
- systemctl reload-or-restart SERVICE
再ロードできるサービスであれば再ロードし、再ロードできないサービスであれば再開します。サービスが実行されていない場合は再開します。
- systemctl mask SERVICE
サービスがマスクされている場合、ユニットファイルが
/dev/null
にシンボリックリンクされています。マスクされたサービスのシンボリックリンクは、/dev/null
を指すように/etc/systemd/system
から作成されます。その結果、サービスを別の有効なサービスが必要としていても、そのサービスはロードできません。このようなサービスは手動で停止する必要があります。停止しないとバックグラウンドで実行が継続します。--runtime
オプションを使用すると、システムの次回再起動までサービスを一時的にマスクできます。Created symlink /etc/systemd/system/FOSSLinux.service → /dev/null.
- systemctl unmask SERVICE
サービスのマスクを解除します。システムを手動で開始または再開する場合に効果的です。
9.3 システムの状態の管理 #
systemctl
コマンドでは、再起動、シャットダウンなど、システム上で次に示すような電源管理プロセスを実行できます。
- systemctl reboot
システムを再起動します(
reboot.target
)。- systemctl poweroff
システムの電源をオフにします(
poweroff.target
)。- systemctl emergency
緊急モードへ移行します(
emergency.target
)。- systemctl default
デフォルトのターゲットへ戻ります(
multi-user.target
)。
10 systemd
のトラブルシューティング #
次のトラブルシューティングのヒントを使用すると、systemd
サービスの問題を特定して解決し、システムの円滑な動作を保証できます。
-
systemd-analyze verify SERVICE
を使用してsystemd
ユニットファイルの構文を確認 systemd
サービスを開始または有効化する前に、ユニットファイルの構文にエラーがないことを確認します。次に例を示します。>
sudo
systemd-analyze verify /etc/systemd/system/my-custom-service.serviceこのコマンドは、ユニットファイルを分析して、構文エラー、不足しているファイルなどの問題を報告します。サービスを有効にして開始する前に、報告された問題を修正する必要があります。
-
journalctl -u SERVICE
コマンドを使用してサービスのログを確認 systemd
サービスで問題が発生した場合は、そのサービスのログを確認します。次に例を示します。>
sudo
journalctl -u my-custom-service.serviceこのコマンドは指定されたサービスのログを表示します。このログにはエラーメッセージや警告などの関連情報が記録されています。これらのログを使用して、サービスの問題を特定して修正できます。
-
systemd-analyze plot
コマンドを使用してブートプロセスを視覚化 ブートプロセス中にサービスで問題が発生している場合は、
systemd-analyze plot command
を使用してブートプロセスを視覚化し、問題を特定できます。次に例を示します。>
sudo
systemd-analyze plot > boot-plot.svgこのコマンドでは、ブートプロセスと潜在的な問題のグラフィカル表現が含まれる
boot-plot.svg
というSVGファイルが作成されます。各サービスの開始時刻と停止時刻も含まれます。このファイルをSVG互換の画像ビューアまたはWebブラウザで開き、ブートプロセスで発生する問題の原因となっているサービスを分析できます。- 障害が発生したサービスのトラブルシューティング
障害が発生したサービスを確認し、ログ出力を検査するには、次のコマンドを実行します。
>
sudo
systemctl --state=failed- 実行しているサービスの状態を確認
実行しているサービスの現在の状態を確認するには次のコマンドを実行します。
>
sudo
systemctl status SERVICE- 長時間を要するシャットダウンや再起動
シャットダウンや再起動に長時間を要する場合は、終了していないサービスがあることが考えられます。
systemd
は、各サービスの強制終了を試みる前に、その終了を一定時間待機します。多く見られる問題は、保留状態のサービスやシャットダウンの停止です。これを確認するには次のコマンドを使用します。>
sudo
systemctl poweroff Failed to power off system via logind: There's already a shutdown or sleep operation in progress>
sudo
systemctl list-jobs実行中および待機中のジョブをキャンセルし、再度シャットダウンまたは再起動することができます。
>
sudo
systemctl cancel>
sudo
systemctl stop systemd-suspend.service
11 systemd
のベストプラクティス #
いくつかのベストプラクティスに従うことで、さまざまな状況に対応できる効率的なsystemd
サービスを実現できます。
- 実行しているサービスの状態を確認
実行しているサービスの現在の状態を確認するには次のコマンドを実行します。
>
sudo
systemctl status SERVICE-
systemd
ユニットファイルでは絶対パスを使用 設定ファイルや、
systemd
ユニットファイルのスクリプトなど、実行可能ファイルや必須ファイルには絶対パスを使用します。systemd
では、$PATH
などのユーザの環境変数がファイルの検索に使用されません。- ExecReloadディレクティブの使用
systemctl reload
コマンドでサービスを再ロードするときに実行する特定のコマンドを定義するには、[SERVICE]
セクションでExecReloadディレクティブを使用します。再起動を伴わずに設定を動的に再ロードできるサービスで、このディレクティブが効果的です。[Service] ExecStart=PATH_TO_EXECUTABLE ExecReload=PATH_TO_RELOAD_SCRIPT
- RestartSecディレクティブの使用
障害が発生した後でサービスを再起動するまでの遅延時間を秒の単位で定義するには、
[SERVICE]
セクションでRestartSecディレクティブを使用します。リソースを解放するために指定の時間を必要とするサービスや、システムに対する過大な負荷の原因となりかねない急速な再起動ループを防止するサービスで、このディレクティブが効果的です。[Service] ExecStart=PATH_TO_EXECUTABLE Restart=on-failure RestartSec=5
- リモートコンピュータでの緊急モードの無効化
リモートコンピュータでの緊急モードを無効化できます。このようなコンピュータとして、Google Cloudでホストされている仮想マシンなどがあります。このモードが有効な場合、そのコンピュータはネットワークへの接続をブロックされます。次に例を示します。
>
sudo
systemctl mask emergency.service>
sudo
systemctl mask emergency.target
12 法的事項 #
Copyright © 2006–2024 SUSE LLC and contributors. All rights reserved.
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSEの商標については、https://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは正確性を完全に保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。