systemctlとは?
sysytemctlの概要
systemctlはSystemdという初期化システムに関連するユーティリティです。Systemdは、Linuxシステムの起動と管理を目的として開発されました。それ以前はSysVinitやUpstartなどの初期化システムが一般的でしたが、Systemdはこれらを置き換える形で台頭しました。現在はまずSystemdについて理解すればよいのかなと思います。
Systemdの概要
SystemdはLinuxシステムでの初期化(起動)とサービス管理を行うためのシステムおよびユーティリティのデーモンでubuntuだけでなく他のディストリビューションでも採用されています。
Systemdは下記のような特徴があります。ここでは概要を述べますが、もっと詳しく知りたい方はこちらの資料を参考にするといいでしょう。少々古いですが、SystemdだけでなくSysVinitやUpstartにも触れておりわかりやすく説明されています。
- 並行起動とパラレル処理
Systemdはシステムの各サービスを並行して起動し依存関係に基づいてパラレルに処理します。これによりシステムの起動時間が短縮されます。 - ユニットファイルに基づくサービス管理
各サービスの構成情報をユニットファイルとして管理するため、システム管理者はサービスの設定を柔軟に管理できます。なおユニットファイルは、Systemdによって使用されるサービス、ソケット、デバイス、マウントポイントなどのユニットの設定を定義するテキストファイルです。 - ジャーナリングとログ管理
システムのログをジャーナルに記録し、ログの管理やクエリが容易になります。 - 統合されたインターフェース
コマンドラインツール(systemctlなど)を介してシステムの管理を提供します。これにより、システムの制御が一貫したインターフェースで行えます。 - cgroupsの管理
Systemdは、コントロールグループ(cgroups)を使用してプロセスのリソース制限や優先度の管理を行います。
Systemdは時間に余裕のある方、もっとlinuxについて理解を深めたい方向けの内容なので、正直実務ではここの内容は理解しなくてもなんとかなります!心配しないでくださいね。
systemctlの基本的な使い方
前提
ubuntu 20.04.3 LTS
サービスの起動と停止と再起動
サービスの起動、停止、再起動に関するコマンドは下の3つになります。
systemctl start apache2
systemctl stop apache2
systemctl restart apache2
サービスの自動起動登録、自動起動解除
システムの起動時に自動でサービスが起動する/しないように設定するためのコマンドです。
systemctl enable apache2
systemctl disable apache2
サービスの状態確認
サービスの状態を確認します。実際にコマンド実行した結果のサンプルを表示します。
systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://httpd.apache.org/docs/2.4/
May 11 10:12:11 【ホスト名】 systemd[1]: Starting The Apache HTTP Server...
May 11 10:12:11 【ホスト名】 systemd[1]: Started The Apache HTTP Server.
May 11 10:13:49 【ホスト名】 systemd[1]: Stopping The Apache HTTP Server...
May 11 10:13:50 【ホスト名】 systemd[1]: apache2.service: Succeeded.
May 11 10:13:50 【ホスト名】 systemd[1]: Stopped The Apache HTTP Server.
May 11 10:13:50 【ホスト名】 systemd[1]: Starting The Apache HTTP Server...
May 11 10:13:50 【ホスト名】 systemd[1]: Started The Apache HTTP Server.
May 11 10:18:42 【ホスト名】 systemd[1]: Stopping The Apache HTTP Server...
May 11 10:18:43 【ホスト名】 systemd[1]: apache2.service: Succeeded.
May 11 10:18:43 【ホスト名】 systemd[1]: Stopped The Apache HTTP Server.
サービスの状態一覧確認
コマンドにlist-unit-filesを追記することで、使用しているOSにあるサービスの状態を一度に取得することができます。またgrepすることで総数をカウントすることもできます。
systemctl list-unit-files -t service
UNIT FILE STATE VENDOR PRESET
accounts-daemon.service enabled enabled
amavis-mc.service generated enabled
amavis-snmp-subagent.service generated enabled
amavis.service generated enabled
amavisd-new.service generated enabled
amavisd-snmp-subagent.service generated enabled
apache-htcacheclean.service disabled enabled
...
systemctl list-unit-files -t service | grep -c "enabled enabled"
65
まとめ
この記事ではsystemctlについて解説しました。特にSystemdのところは難しいな~と感じたかもしれません。unitファイルに関するコマンドも紹介すると勉強にはなるので、またタイミングをみて編集していこうと思います。
実務では基本的な使い方で紹介したコマンドが使えれば十分ですので、怖がらずに実務でも使ってみてくださいね!