🗂

ユニット in sytemd?

に公開

とても良い質問です!
systemd を使う上で避けて通れない「ユニット(unit)」という概念、
これは systemd があらゆるリソースやサービスを管理するための“構成ファイル単位”のことです。


✅ 一言で言うと:

ユニット = systemdが扱う「管理対象(サービスやマウントなど)」のこと。設定ファイル単位で存在する。


🧠 もう少し詳しく:

systemd は「ユニット」という単位で以下のようなものを管理します:

ユニットの種類 説明
.service サービス(デーモン) nginx.service, sshd.service
.socket ソケット通信 docker.socket, cups.socket
.target サービスのグループ multi-user.target, graphical.target
.mount マウントポイント(ファイルシステム) home.mount, mnt-data.mount
.timer 時間ベースの実行(cron的なやつ) logrotate.timer, backup.timer
.path ファイル・ディレクトリ監視 myapp.path(ファイル作成で起動など)

📁 実体はどこにある?

  • 設定ファイル(ユニットファイル)は .unit 拡張子(例:sshd.service

  • よくある場所:

    • /etc/systemd/system/(ユーザー定義)
    • /lib/systemd/system/(パッケージ定義)
    • ~/.config/systemd/user/(ユーザーユニット)

📜 サービスユニット(.service)の例

[Unit]
Description=My Awesome App
After=network.target

[Service]
ExecStart=/usr/bin/myapp
Restart=always

[Install]
WantedBy=multi-user.target

これを /etc/systemd/system/myapp.service に保存して:

sudo systemctl enable myapp
sudo systemctl start myapp

でサービスとして起動・常駐できるようになります。


✅ ユニットの使い方(操作)

コマンド 意味
systemctl start nginx.service nginxを起動
systemctl stop nginx nginxを停止(拡張子省略OK)
systemctl status nginx nginxの状態確認
systemctl enable myapp.service 自動起動に設定
systemctl list-units 起動中のユニットを一覧
systemctl daemon-reload ユニットファイルを再読み込み

✅ まとめ

項目 内容
ユニットとは? systemdが管理する“設定ファイル単位の対象”(サービス・タイマーなど)
ユニットの種類 .service, .timer, .mount, .socket など多数
なぜ大事? systemdのすべての制御は「ユニット」を操作することで実現されている

もっと詳しく .timer.path の使い方も知りたいですか?
それとも、「最初に作ってみるおすすめユニットファイル」を紹介しましょうか?

Discussion