LinuCレベル2 システムの起動とLinuxカーネル 問21
システムの起動とLinuxカーネル/システム起動のカスタマイズsystemdで、あるユニットに対してsystemctl maskを実行したときの状態として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムの起動とLinuxカーネル」に対応。実際の試験問題ではありません)
- A起動時の自動起動だけが無効になり、systemctl startによる手動起動は引き続き行える
- Bユニットが/dev/nullへのシンボリックリンクで覆われ、手動でも依存関係経由でも起動できなくなる
- Cユニットファイルが/usr/lib/systemd/systemから削除され、パッケージの再導入まで戻せなくなる
- D実行中のプロセスが一時停止され、unmaskを実行すると停止した位置から処理が再開される
正解:B
解説
systemctl maskは、/etc/systemd/system/にユニット名で/dev/nullへのシンボリックリンクを作り、元のユニットファイルを覆い隠します。これにより、手動のsystemctl startでも、他のユニットからの依存関係による起動でも、そのユニットは起動できなくなります。元に戻すにはsystemctl unmaskでリンクを削除します。自動起動だけを止めるdisableよりも強い無効化であり、競合するサービスを確実に止めておきたい場合などに使います。
選択肢ごとの解説
- A誤り。これはsystemctl disableの説明です。maskは手動起動も含めて起動そのものをできなくします。
- B正しい。maskは/etc/systemd/system/に/dev/nullへのリンクを作り、あらゆる経路での起動を妨げます。
- C誤り。maskはパッケージが配置したユニットファイルを削除しません。/etc側のリンクで覆うだけなので、unmaskで元に戻せます。
- D誤り。maskはプロセスを一時停止する機能ではありません。実行中のサービスを止めるにはsystemctl stopを別に実行します。