😄
[Linux]: Systemdについて調べたメモ
[Linux]: Systemdについて調べたメモ
Systemdとは
Linuxの起動時の処理やシステムの管理、デーモンプログラムの起動などを行うソフトウェア群でRedHat社のエンジニアが開発を開始した。
以前使用されていたSysVinitの代わりに多くのLinuxディストリビューションに採用されている。
initが行ってきた制御やランレベル、起動過程を置き換え、ユーザーログインやシステムコンソール、デバイスホットプラグ、ロギングを処理し、Linuxにおける共通するサービスを統合する。
カーネルが一番最初に生成するユーザープロセスでプロセス番号「1」が与えられる
主な機能
- ブート時のシステムサービスの並行起動
- デーモンのオンデマンドアクティベーション
- 依存関係ベースのサービス制御ロジック
> ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 444444 11532 ? Ss 18:03 0:02 /lib/systemd/systemd --system --switched-root --deserialize 31
> pstree
systemd ─┬─ NetworkManager
├─ auditd
├─ chronyd
├─ crond
├─ firewalld
├─ rsyslogd
└─ sshd
ブートシーケンス
initdとの違い
initd
- 伝統的なinitシステム
- ランレベルを使用して動作モードを制御し、各ランレベルにサービスが紐づけられる
- 並列起動が難しく、ブート時間が長くなる
systemd
- 各種サービスを並列起動することができ、ブート時間を大幅短縮
- ユニットファイルによるサービスの定義
- systemdに依存する反面、依存関係の自動管理を行ってくれる
- ログ管理システムを統合されているので、システムログを一元管理
ユニットとは
ユニットとはsystemdが管理するリソースやタスクの基本単位のことで設定ファイルを基にシステムを構成し、起動する。
動作するサービスやデバイス、マウントポイントを統一的に管理することができる
ユニットファイルの格納場所
- /usr/lib/systemd/system
- /run/systemd/system
- /etc/systemd/system
service
- デーモンプロセスやアプリケーションを管理
device
ハードウェアデバイスとその可溶性を管理する
mount
- ファイルシステムのマウントポイントを管理
- 一部は/etc/fstabを元に自動生成される
target
- 複数のユニットをグループ化
- システムの状態を定義
timer
- 時間ベースでの実行をスケジュール
- cronの代替え
基本的な使い方
systemctlコマンドで制御する
基本書式
systemctl [オプション] コマンド [名前]
オプション、コマンドどちらも使用率が高そうなやつのみ記載。
オプション
| オプション | 意味 |
|---|---|
| -t タイプ | ユニットタイプを指定 |
| -l | ユニット・プロセス名を省略せずにすべて表示する |
| -s シグナル | 指定したプロセスにシグナルを送信する (デフォルトはSIGTERM) |
コマンド
| コマンド | 意味 |
|---|---|
| list-units | 起動している全ユニット表示 |
| list-utils-files | インストールされている全ユニット表示 |
| enable ユニット | 指定したユニットをシステム起動時に起動する |
| disable ユニット | 指定したユニットをシステム起動時に起動しないように |
| start ユニット | 指定したユニットを起動する |
| stop ユニット | 指定したユニットを起動しない |
| reload ユニット | 指定したユニットの設定ファイルを再読み込み |
| status ユニット | 指定したユニットの状態を表示 |
| kill ユニット | 指定したユニットにシグナルを送信して止める |
| is-enable ユニット | 指定したターゲットがシステム起動時に起動するか確かめる |
参考
最後に
間違っていることあればコメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion