🗂
ユニット 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