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