Linux systemctl コマンド

Linux コマンド大全


systemctl とは

systemctl は、Linux システムにおいて systemd システムおよびサービス管理を制御するためのコマンドラインツールです。現代の Linux ディストリビューションにおける中核コンポーネントとして、従来の init システムや service コマンドに取って代わりました。

systemd の概要

systemd はシステムおよびサービスマネージャーであり、以下の特徴があります:

  • PID 1(最初に起動するプロセス)として動作します
  • 他のすべてのプロセスの起動、停止、管理を担当します
  • 並行起動機能を提供し、システムの起動速度を大幅に高速化します
  • オンデマンドでのサービス起動をサポートします
  • ログ収集機能を提供します(journald 経由)

systemctl 基本構文

systemctl [选项] [命令] [单元名称]

よく使うオプション

オプション 説明
-t, --type ユニットタイプを指定します(service、socket、device など)
-a, --all 非アクティブなものを含むすべてのユニットを表示します
--state 状態でユニットをフィルタリングします
-l, --full 完全なユニット情報を表示します
-H, --host リモートホストを操作します

サービス管理コマンド

サービスの開始/停止/再起動

例

# サービスを開始
sudo systemctl start [サービス名]

# サービスを停止
sudo systemctl stop [サービス名]

# サービスを再起動
sudo systemctl restart [サービス名]

# 設定を再読み込み(サービスを再起動しない)
sudo systemctl reload [サービス名]

サービスの状態確認

例

# 単一のサービスの状態を確認
systemctl status [サービス名]

# 実行中のすべてのサービスを表示
systemctl list-units --type=service --state=running

# 失敗したサービスを表示
systemctl --failed

サービスの有効化/無効化

例

# サービスを有効化(起動時の自動開始)
sudo systemctl enable [サービス名]

# サービスを無効化(起動時の自動開始を解除)
sudo systemctl disable [サービス名]

# サービスが有効かどうかを確認
systemctl is-enabled [サービス名]

ユニットファイル管理

ユニットファイルの場所

  • システムユニット:/usr/lib/systemd/system/
  • 管理者カスタムユニット:/etc/systemd/system/

よく使うユニットファイル操作

例

# すべてのユニットファイルを再読み込み(設定変更後に実行が必要)
sudo systemctl daemon-reload

# ユニットファイルの内容を表示
systemctl cat [ユニット名]

# ユニットファイルを編集(オーバーライドファイルが作成されます)
sudo systemctl edit [ユニット名] --full

システム状態管理

システム電源管理

例

# シャットダウン
sudo systemctl poweroff

# 再起動
sudo systemctl reboot

# サスペンド
sudo systemctl suspend

# ハイバネート
sudo systemctl hibernate

システムのランレベル

例

# 現在のターゲット(ランレベル)を取得
systemctl get-default

# デフォルトターゲットを設定
sudo systemctl set-default [ターゲット名]

# ターゲットを切り替え(即座に反映)
sudo systemctl isolate [ターゲット名]

一般的なターゲット:

  • graphical.target - グラフィカルインターフェースモード
  • multi-user.target - マルチユーザーテキストモード
  • rescue.target - レスキューモード
  • emergency.target - 緊急モード

実践例

例1:Nginx サービスの管理

例

# Nginx を起動
sudo systemctl start nginx

# 起動時の自動開始を設定
sudo systemctl enable nginx

# 状態を確認
systemctl status nginx

# 設定をテストして再読み込み
sudo nginx -t  # まず設定をテスト
sudo systemctl reload nginx

例2:カスタムサービスの作成

  1. サービスファイルの作成/etc/systemd/system/myapp.service:

例

[Unit]
Description=My Custom Application
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myappuser
Group=myappgroup
Restart=always

[Install]
WantedBy=multi-user.target
  1. サービスを有効化して起動:

例

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

よくある問題のトラブルシューティング

サービスの起動失敗

  1. 詳細なログを確認:

    journalctl -u [服务名] -xe
  2. 依存関係を確認:

    systemctl list-dependencies [服务名]
  3. デバッグモードで実行:

    systemctl status [服务名] -l --no-pager

パフォーマンス分析

例

# システムの起動にかかった時間を表示
systemd-analyze

# 各サービスの起動時間を表示
systemd-analyze blame

# 起動プロセス図を生成(GUI が必要)
systemd-analyze plot > boot.svg

Linux コマンド大全

その他の拡張