systemdでtargetを切り替える!

systemdでtargetを切り替えます。targetを切り替えることで、起動しているUnitを制御して、システムの起動状態を変えることができます。

ターゲットの確認

「/lib/systemd/system」で、末尾がtagetとなっているものがシステムで定義されているターゲットです。

$ ls -l /lib/systemd/system

ユーザで定義するターゲットは、「/etc/systemd/system」に配置します。

$ ls -l /etc/systemd/system

基本的なターゲット

通常使用する基本的なターゲットを確認します。

  • multi-user.target:GUIを起動しません。(サーバでのデフォルトターゲット)
  • graphical.target:GUIを起動します。(デスクトップでのデフォルトターゲット)
  • rescue.target:トラブル時の対応用で最小限のUnitのみ起動します。
  • poweroff.target:電源をOFFします。
  • reboot.target:システムを再起動します。
  • halt.target:システムを停止します。電源OFFはしません。
  • suspend.target:サスペンドします。
  • hibernate.target:システムをハイバネートします。
  • hybrid-sleep.target:システムをハイブリッドスリープします。

デフォルトのターゲットを確認する。

デフォルトのターゲットを確認します。デフォルトのターゲットは起動時の状態を指定します。デスクトップでは、「graphical.target」になってっています。

$ sudo systemctl get-default
graphical.target

ターゲットを切り替える。

ターゲットを切り替えます。GUIを停止するため、multi-user.targetに着替えます。

$ sudo systemctl isolate multi-user.target

実行すると、コマンドラインのログインプロンプトが表示されます。ログインして、以下のコマンドを実行するとGUIに戻ります。

$ sudo systemctl isolate graphical.target

トラブルが起きたときは、以下のコマンドでレスキューモードに変更して障害対応を行いましょう。

$ sudo systemctl isolate rescue.target

デフォルトのターゲットを変更する。

GUIをインストールしたが、サーバとして利用することにしたため、デフォルトターゲットを「graphical.target」から「multi-user.taget」に変更してみましょう。

$ sudo systemctl set-default multi-user.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.

再起動して、multi-user.targetで起動することを確認します。

おわりに

systemdでは、ターゲットを利用してシステムの状態を定義して切り替えることができます。電源制御についてもターゲットで制御します。