このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

プロセス制御システム(systemd)サービスの起動と停止

プロセス制御システム(systemd)は、以下の4部に分けて解説しています。

ターゲットの変更を伴わないサービスの起動と停止

 systemdでは、SysVinitと同様に、ターゲット(ランレベルに相当)を変更することなく、サービスを個別に起動したり停止したりすることができます。これは、システム管理者が特定のサービスを手動で制御するために頻繁に行われる操作です。サービスの起動/停止には、systemctlコマンドを使用します。

サービス操作に関するsystemctlコマンドのサブコマンド

下表は、systemctlコマンドの主要なサブコマンドについてまとめたものです。

systemctlコマンドのサブコマンド一覧
サブコマンド説明
start指定したサービスを起動します。
stop指定したサービスを停止します。
restartサービスを一度停止し、再起動します。
status指定したサービスの詳細な状態を表示します。
is-activeサービスが現在稼働中かどうかを表示します。
enableシステム起動時にサービスが自動的に起動するよう設定します。
disableシステム起動時にサービスが自動的に起動しないよう設定します。
is-enabledサービスがシステム起動時に自動的に起動するかどうかを表示します。
systemctlコマンドのサブコマンド一覧

openvpnサービスについて

 OpenVPNは、オープンソースのVPN(Virtual Private Network)ソフトウェアです。インターネット上で安全なポイントツーポイントまたはサイトツーサイトの接続を確立し、リモートアクセスやサイト間接続などに利用されます。

openvpnサービスの操作例

1.openvpnサービスの起動の有無を確認する

・「systemctl is-active openvpn.service」コマンドを実行します。

このコマンドでopenvpnサービスが「active」(稼働中)かどうかを確認できます。

user01@ubuntu-vm:~$ systemctl is-active openvpn.service
active

 サービス名を指定する際には、「openvpn.service」と入力しなくとも、「.service」の部分を省略して「openvpn」だけで指定できるようになっています。

・「systemctl is-active openvpn」コマンドを実行します。

user01@ubuntu-vm:~$ systemctl is-active opnevpn
active

「openvpn」サービスが稼働していることが分ります。

2.openvpnサービスを停止する

・「sudo systemctl stop openvpn」コマンドを実行し、サービスが稼働しているかを「systemctl is-active openvpn」コマンドで確認します。

openvpnサービスを停止します。パスワードの入力を求められたら、パスワードを入力します。

user01@ubuntu-vm:~$ sudo systemctl stop openvpn
[sudo] user01 のパスワード: # パスワードを入力します
user01@ubuntu-vm:~$ systemctl is-active openvpn
inactive
3.openvpnサービスを起動する

・「sudo systemctl start openvpn」コマンドを実行し、サービスが稼働しているかを「systemctl is-active openvpn」コマンドで確認します。

停止していたopenvpnサービスを再び起動します。

user01@ubuntu-vm:~$ sudo systemctl start openvpn
user01@ubuntu-vm:~$ systemctl is-active openvpn
active
4.Linuxの起動時にopenvpnサービスを起動しないように設定する

 Linux起動時にサービスを起動するか、しないかを設定する場合、SysVinitではサービスの起動/停止コマンドとは異なるchkconfigを使用したが、systemdでは、サービスの起動/停止と同様にsystemctlコマンドが使えます。

・「sudo systemctl disable openvpn」コマンドを実行します。

これにより、システム起動時にopenvpnが自動的に起動しなくなります。

user01@ubuntu-vm:~$ sudo systemctl disable openvpn
Synchronizing state of openvpn.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable openvpn
Removed /etc/systemd/system/multi-user.target.wants/openvpn.service.
5.Linuxの起動時にopenvpnサービスを起動するように設定する

・「sudo systemctl enable openvpn」コマンドを実行します。

この操作で、システムの起動時に自動的にopenvpnが起動するようになります。パスワードの入力を求められたら、パスワードを入力します。

user01@ubuntu-vm:~$ sudo systemctl enable openvpn
Synchronizing state of openvpn.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable openvpn
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn.service → /lib/systemd/system/openvpn.service.

成功・失敗のフィードバック

 SysVinitでは、サービスを起動または停止するコマンドを実行した際に、コマンド自体が成功したか失敗したかの明確なフィードバックが得られることが一般的でした。

 しかし、systemdを使用する場合、systemctl startsystemctl stopコマンドを実行しても、成功したか失敗したかの直接的なメッセージが出力されないことがあります。このため、以下のようなサブコマンドを使用して、操作の結果を確認することが重要です。

systemctl status [サービス名]

 このコマンドは、指定したサービスの状態(活動中、非活動中、エラーなど)、最近のログのスニペット、プロセスIDなど詳細な情報を提供します。サービスが起動に失敗した場合、このコマンドによって原因の特定が可能です。

systemctl is-active [サービス名]

 シンプルにそのサービスが現在「active」(動作中)か「inactive」(停止中)または「failed」(失敗状態)かを確認します。これは素早くサービスの状態を把握するのに役立ちます。

まとめ

 systemctlを用いることで、Linuxシステム上のサービス管理が直感的かつ効率的に行えます。これらのコマンドはシステム管理者やエンジニアにとって日常的に使用される重要なツールの一部です。サービスの状態管理、起動/停止、および自動起動設定は、システムの安定性とセキュリティを保つために不可欠です。