systemctlとは?

- web系知識メモ

systemctlとは?

Django+gunicorn+nginxで開発を行うと、コードを変更するたびにsudo systemctl restart gunicornってコマンドを使いますよね。 restartって言ってるくらいだから再起動してるんですけど、じゃあsystemctlってなんなん?っていうことを調べてみます。

参考リンク

【Linux】systemdとsystemctlコマンド:サービスの自動起動に詳しく書いてありそうなのでこちらを参考にして見ていきます。

上のリンクによると次のように説明されています。

UbuntuやCentOSなど多くのLinuxディストリビューションでは、systemdでサービスやデーモンを管理し、systemctlコマンドでsystemdをコントロールします。

全く分かりません。詳しく見ていきましょう。

systemd

systemdとは

systemdはカーネルによって最初に起動されるプログラムです。一番最初に起動するのでプロセスIDは1です。 サービスやデーモンの起動などを管理するプログラムであり、すべてのデーモンを管理するデーモンとも言えます。いわばデーモンの親であり、その他のデーモンは子です。

分からない単語が出てきました。

  • カーネル:OSの中核を担うソフトウェア
  • プロセスID:OSが現在実行中のプロセスを識別するために割り当てる一意な識別子。
  • デーモン:メモリ上に常駐し、処理要求を待ち続けるバックグラウンドで動くプログラム。OS起動時に起動し、実行状態となる。処理要求がきたら自分のコピーを作り処理を行う。主にWebサーバーや、FTP、SSHなどはデーモンで動作している。

つまり、OSの中心となっている部分が一番最初に起動されるのがsystemdで、Webサーバーなどの起動を管理するプログラムであるデーモンの親プログラムがsystemdだということみたいですね。

処理単位:unit

systemdはunitという単位でサービス(処理)を管理しています。 unitには設定ファイルと呼ばれるファイルで定義されており、接尾辞が「service」や「target」のファイルです。

接尾辞serviceはgunicornの設定ファイル等で見たことありますね。 unit設定ファイルは以下2か所に存在し、一つ目が初期の保存場所、二つ目が上書きした設定ファイルを置く場所みたいですね。

  1. /usr/lib/systemd/system/
  2. /etc/systemd/system/

このような構成にすることで基本的には1番のデフォルトの設定ファイルを参照し、ユーザーが変更したい部分のみ2番に記述することでカスタマイズすることができるようになっています。

systemdのログ

systemdによって起動したサービスやデーモンのログは以下ディレクトリにバイナリ方式で /var/log/journal 各サービスのログを確認するにはjournalctlコマンドを使用します。 $sudo journalctl -f -u [サービス名] サービスの軌道などで不具合があれば、上記コマンドでエラー内容が表示されます。

systemctl

ようやくsystemctlの話です。systemctlは次のように説明されています。

systemctlコマンドはCentOSやRedhat7系から利用できる、「systemd」をコントロールするコマンドです。 systemctlでサービスの起動・停止や自動起動の設定、サービス状態の確認などができます。

となるとserviceコマンドとの差別化点がどこかが気になりますが、次のように記述されています。

serviceコマンドはinitを呼び出しますが、systemctlコマンドはバイナリコマンドです。 initの代替機能であり、高度なシステム管理機能を提供します。 Linuxでのサービスとはアプリケーションを指します。Webサーバーやファイアウォールといった各アプリケーションもすべてサービスです。 つまりアプリケーションの動作をコントロールするコマンドがsystemctlです。

ようやくつながってきました。

要するにsystemctlはそのサーバーのアプリケーションの起動状態を操作、管理できるコマンドということですね!

まとめ

  • systemdはカーネルによって最初に起動されるプログラムで、サービスやデーモンの起動などを管理するプログラムです。
  • systemctlコマンドは「systemd」をコントロールするコマンドで、サービスの起動・停止や自動起動の設定、サービス状態の確認などができます。

以上。詳しい操作等はこのサイトに記述がありますので、確認してみてください!