systemctl systemd のサービスや起動の設定を管理する
systemctl コマンド [ユニット名]試してみる
systemctl --version | head -1systemd のバージョンを表示します。
systemctl get-default起動時に入るターゲット(動作モード)を表示します。
sudo systemctl set-default multi-user.target起動時のターゲットを、コマンドライン(GUIなし)の multi-user.target に変えます。
systemctl get-default変更されたことを確認します。
sudo systemctl set-default graphical.target元の graphical.target(GUIあり)に戻します。
systemctl list-unit-files --type=target | head -5ターゲットのユニットファイルの一覧を表示します。
主なオプション
start / stop / restart ユニット | サービスを起動 / 停止 / 再起動する |
|---|---|
reload ユニット | 停止せずに設定を再読み込みする |
status ユニット | 状態と、最近のログを表示する |
enable / disable ユニット | 起動時の自動起動を有効 / 無効にする |
is-active / is-enabled | 動作中か / 自動起動が有効かを調べる |
get-default / set-default | 起動時のターゲットを表示 / 設定する |
isolate ターゲット | 指定したターゲットに切り替える |
解説
systemd とユニット
systemd は、多くの Linux ディストリビューションで、最初に起動して、他のサービスを管理するしくみです。管理の対象を「ユニット」と呼びます。ユニットには、サービス(ssh.service など)、ターゲット(graphical.target など)、マウント(.mount)などの種類があり、定義は /lib/systemd/system/(管理者が書くものは /etc/systemd/system/)にあるファイルです。systemctl は、そのユニットを操作するコマンドです。
このページのターミナルでは systemd が起動していないため、一部の操作は試せません。start、stop、status などは、実機でのみ動きます。ここでは、設定ファイルだけを扱う get-default と set-default などを試せます。
サービスの操作(実機)
sudo systemctl start ssh # 起動する
sudo systemctl stop ssh # 停止する
sudo systemctl restart ssh # 再起動する
systemctl status ssh # 状態を見る
sudo systemctl enable ssh # 起動時の自動起動を有効にする
start は今すぐ起動するだけで、次の起動時には影響しません。起動時の設定は enable / disable で行い、enable --now を付けると、両方を一度にできます。
ターゲット
ターゲットは、昔の「ランレベル」にあたる、動作モードです。
| ターゲット | 意味 | 昔のランレベル |
|---|---|---|
| poweroff.target | 停止 | 0 |
| rescue.target | レスキューモード | 1 |
| multi-user.target | CUI で複数ユーザー | 3 |
| graphical.target | GUI | 5 |
| reboot.target | 再起動 | 6 |
set-default は、起動時のターゲットを /etc/systemd/system/default.target のシンボリックリンクとして保存します。今すぐ切り替えるときは、systemctl isolate multi-user.target を使います。