Linuxのsystemctlでシステム管理の基礎を学ぼう!

eyecatch-linux-systemctl
目次

systemctlとは?

sysytemctlの概要

systemctlはSystemdという初期化システムに関連するユーティリティです。Systemdは、Linuxシステムの起動と管理を目的として開発されました。それ以前はSysVinitやUpstartなどの初期化システムが一般的でしたが、Systemdはこれらを置き換える形で台頭しました。現在はまずSystemdについて理解すればよいのかなと思います。

Systemdの概要

SystemdはLinuxシステムでの初期化(起動)とサービス管理を行うためのシステムおよびユーティリティのデーモンでubuntuだけでなく他のディストリビューションでも採用されています。

Systemdは下記のような特徴があります。ここでは概要を述べますが、もっと詳しく知りたい方はこちらの資料を参考にするといいでしょう。少々古いですが、SystemdだけでなくSysVinitやUpstartにも触れておりわかりやすく説明されています。

  1. 並行起動とパラレル処理
    Systemdはシステムの各サービスを並行して起動し依存関係に基づいてパラレルに処理します。これによりシステムの起動時間が短縮されます。
  2. ユニットファイルに基づくサービス管理
    各サービスの構成情報をユニットファイルとして管理するため、システム管理者はサービスの設定を柔軟に管理できます。なおユニットファイルは、Systemdによって使用されるサービス、ソケット、デバイス、マウントポイントなどのユニットの設定を定義するテキストファイルです。
  3. ジャーナリングとログ管理
    システムのログをジャーナルに記録し、ログの管理やクエリが容易になります。
  4. 統合されたインターフェース
    コマンドラインツール(systemctlなど)を介してシステムの管理を提供します。これにより、システムの制御が一貫したインターフェースで行えます。
  5. 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ファイルに関するコマンドも紹介すると勉強にはなるので、またタイミングをみて編集していこうと思います。

実務では基本的な使い方で紹介したコマンドが使えれば十分ですので、怖がらずに実務でも使ってみてくださいね!

参考

Linuxをマスターしたい人のための実践Ubuntu

これからSystemd入門する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Hack Luck Labの管理人hakula(ハクラ)です。2012年にSIerに新卒入社し、SE、新規事業、情シスを担当。その後、ITコンサルを経て、現在はバックエンドエンジニア。過去にはC#、SQL Server、JavaScriptで開発を行い、現在はPython、Rest Framework、Postgresql、Linux、AWSなどを使用しています。ノーコードツールやDX関連も興味あり。「技術は価値を生むために使う」ことが信条で、顧客や組織への貢献を重視しています。

目次