序章

近年、Linuxディストリビューションは他のinitシステムからsystemdにますます移行しています。 systemdツールスイートは、起動以降のマシン全体を管理するための高速で柔軟なinitモデルを提供します。

このガイドでは、systemd対応サーバーを管理するために知っておく必要のある最も重要なコマンドについて簡単に説明します。 これらは、systemdを実装するすべてのサーバー(Ubuntu 15.04、Debian 8、CentOS 7、Fedora 15以降のすべてのOSバージョン)で動作するはずです。 始めましょう。

基本ユニット管理

systemdが管理および操作する基本的なオブジェクトは、「ユニット」です。 ユニットにはさまざまなタイプがありますが、最も一般的なタイプは「サービス」です(.serviceで終わるユニットファイルで示されます)。 systemd対応サーバーでサービスを管理するための主なツールは、systemctlコマンドです。

通常のinitシステムコマンドはすべて、systemctlコマンドと同等のアクションを実行します。 nginx.serviceユニットを使用してデモンストレーションを行います(このサービスファイルを取得するには、パッケージマネージャーと一緒にNginxをインストールする必要があります)。

たとえば、次のように入力してサービスを開始できます。

  1. sudo systemctl start nginx.service

次のように入力すると、再度停止できます。

  1. sudo systemctl stop nginx.service

サービスを再開するには、次のように入力します。

  1. sudo systemctl restart nginx.service

通常の機能を中断せずにサービスのリロードを試みるには、次のように入力します。

  1. sudo systemctl reload nginx.service

ユニットの有効化または無効化

デフォルトでは、ほとんどのsystemdユニットファイルは起動時に自動的に開始されません。 この機能を構成するには、ユニットを「有効にする」必要があります。 これにより、特定のブート「ターゲット」に接続され、そのターゲットが開始されたときにトリガーされます。

起動時にサービスを自動的に開始できるようにするには、次のように入力します。

  1. sudo systemctl enable nginx.service

サービスを再度無効にする場合は、次のように入力します。

  1. sudo systemctl disable nginx.service

システム状態の概要を取得する

systemdサーバーから取得して、システムの状態の概要を把握できる情報はたくさんあります。

たとえば、systemdが「アクティブ」としてリストしているすべてのユニットファイルを取得するには、次のように入力します(これは、デフォルトのsystemctlの動作であるため、実際にはlist-unitsを省略できます。 )::

  1. systemctl list-units

systemdがメモリにロードした、またはロードを試みたすべてのユニット(現在アクティブでないユニットを含む)を一覧表示するには、--allスイッチを追加します。

  1. systemctl list-units --all

systemdがメモリにロードしようとしていないユニットを含め、システムにインストールされているすべてのユニットを一覧表示するには、次のように入力します。

  1. systemctl list-unit-files

基本的なログ情報の表示

systemdコンポーネントは、journaldと呼ばれ、システムのすべての部分からジャーナルエントリを収集および管理します。 これは基本的に、アプリケーションとカーネルからのログ情報です。

最も古いエントリから始まるすべてのログエントリを表示するには、次のように入力します。

  1. journalctl

デフォルトでは、journaldが以前のブートレコードを保存するように構成されている場合、これは現在および以前のブートからのエントリを表示します。 一部のディストリビューションはデフォルトでこれを有効にしますが、他のディストリビューションはこれを有効にしません(これを有効にするには、/etc/systemd/journald.confファイルを編集してStorage=オプションを「永続的」に設定するか、[X202X ]