# systemd ユニット確認（Systemd Unit Inspector）

systemd のユニットファイル（.service・.timer・.socket）を貼ると、\[Unit\]・\[Service\]・\[Install\] などのセクションごとの設定を表にし、各設定の意味を表示します。ExecStart を \[Unit\] に書いた、絶対パスでない、User が無く root で動く、WantedBy が無く enable できないといった点を行番号つきで指摘します。用途に合わせたひな形も作れます。

- URL: https://tools.itlibra.com/ja/systemd-unit-inspector
- 端末内で処理・アップロードなし
- 最終更新: 2026-10-26

## 使い方

1. ユニットファイルの内容を貼り付けるか、ファイルをドロップします。「サンプルで試す」でも動作を確認できます。
2. 「設定」で、セクションごとの設定と各設定の意味を確かめます。硬化（hardening）の提案もここに出ます。
3. 「指摘」で重要度つきの一覧を見ます。ExecStart の書き間違いや root で動く設定は高・中、そのほかは低です。
4. 「ひな形を作る」で Web アプリか定期実行の unit を作れます。実行ユーザー・パス・時刻を埋めて保存します。
5. ユニットを書き換えたら systemctl daemon-reload を実行してから、サービスを再起動してください。

## こんなときに

- Web アプリを常駐させる service を書いたが、ExecStart を置く場所や User の指定が正しいか確かめたい
- cron の代わりに systemd timer で定期実行したいので、.timer と .service の形を作りたい
- 既存の root で動く service に、NoNewPrivileges や ProtectSystem などの硬化を足せるか確かめたい
- Restart を付けたのに再起動が止まらない（StartLimit の指定）ことがないか確かめたい

## できること

### セクションごとの設定と意味

\[Unit\]・\[Service\]・\[Install\]・\[Timer\]・\[Socket\] のセクションごとに、設定名と値を表にし、各設定の意味を短く表示します。一覧にない設定名は未知として出します。

### セクション違いと綴りの誤り

ExecStart を \[Unit\] に書くなど、その設定が効かないセクションを指摘します。Restartsec のような綴りの違いは、正しい名前の候補もあわせて示します。

### 起動の書き方の確認

Type と ExecStart の組み合わせ（oneshot 以外で複数の ExecStart など）、絶対パスでない実行ファイル、User の無い service、WantedBy の無い \[Install\] を指摘します。

### 再起動の設定の確認

Restart と RestartSec の組み合わせ、StartLimitIntervalSec=0 で再起動の上限が無効になっているかを確かめます。

### 硬化の提案と、ひな形の作成

NoNewPrivileges・ProtectSystem・ProtectHome・PrivateTmp などの未設定を一覧にします。Web アプリと定期実行（timer）のひな形を作ります。


## 対応状況

| 機能 | 対応 | 補足 |
| --- | --- | --- |
| .service・.timer・.socket の読み取りと設定の表示 | 対応 | — |
| セクション違い・綴りの誤り（一覧にある設定名） | 対応 | — |
| Type・ExecStart・User・WantedBy・Restart の基本的な確認 | 対応 | — |
| 硬化の設定の有無（一覧にある 11 項目） | 一部対応 | 設定されているかだけを見ます。効き方や相性は確かめません |
| ひな形（Web アプリ・定期実行）の作成 | 対応 | — |
| systemd-analyze verify・security の代わり | 非対応 | 代わりにはなりません。実行ファイルの存在・権限・依存先は確かめません |
| ユニットの適用・起動・enable、systemctl の実行 | 非対応 | 実行しません。通信もしません |
| drop-in（.d）やテンプレート（@）の展開 | 非対応 | 展開せず、貼り付けた 1 つのファイルだけを見ます |

## 制限・注意事項

- 入力は 100,000 文字・2,000 行まで。超えた分は読み止めて通知します。
- 設定名は一覧にあるものだけを確かめます。一覧にない正しい設定も「未知」と出ることがあります。
- 硬化の提案は、設定されているかを見るだけです。動作を変えるので、試してから入れてください。
- 指摘は systemd の man に沿う項目だけです。systemd のバージョンによって、既定値や設定名は変わることがあります。

## プライバシーと安全性

貼り付けたユニットファイルは、お使いの端末の中だけで処理されます。サーバーへ送信・保存されることはなく、ブラウザにも保存しません。使用状況の記録に内容やファイル名は含めません。

## よくある質問

### service の書き方で最低限必要なものは何ですか？

\[Service\] に実行するコマンドの ExecStart（絶対パス）を書き、\[Install\] に WantedBy=multi-user.target を書くと、systemctl enable で有効にできます。User を省くと root で動くので、専用のユーザーを指定してください。

### ユニットを変えたのに反映されません。

systemctl daemon-reload を実行してから、サービスを再起動してください。daemon-reload を省くと、systemd は古い内容のまま動きます。

### Restart=always と StartLimit の関係は？

Restart は終了のたびに再起動します。既定では期間内の起動回数に上限があるので、壊れた service が無限に再起動することは通常ありません。StartLimitIntervalSec=0 にすると上限が無効になります。

### cron と systemd timer のどちらを使うべきですか？

どちらでも定期実行はできます。timer は依存関係やログ（journal）と組み合わせやすく、Persistent=true で止まっていた間の分を実行できます。用途に合わせて選んでください。

### 硬化の設定はそのまま入れてよいですか？

いいえ。ProtectSystem や MemoryDenyWriteExecute などは、書き込む場所や JIT を使う処理の動きを変えます。ステージング環境で試してから入れてください。
