スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

オペレーティングシステムでは、さまざまなサービスが提供されています。システムが起動するときに、同時にサービスが開始されるものもあります。

Linuxでは、サービスは、デーモンプロセスとして動作しています。Linuxではさまざまなサービスが起動しています。ウェブサイトを運営している場合は、HTTPのサービスを提供することになります。HTTPのサービスを提供するプログラムは、Apacheのhttpdやnginxなどのウェブサーバのアプリケーションがあります。
サービス・デーモンプロセスが動いているかどうかは、 ps コマンドを使用して確認する方法もあれば、 serviceコマンドや systemctl コマンドを使う方法もあります。

今回は、Linux でサービスのステータスを確認する方法についてご紹介します。もともとは、 service コマンドのために記事を作成しておりました。 service コマンド以外に systemctlコマンドを利用することもあるかと思い、 systemctlでのステータスの確認方法についても、追記いたしました。

Linuxのシステム起動周りの仕組み


Linux には、システム起動には以下の仕組みが使われています。
  • SysVinit (SystemV init)
  • Upstart
  • systemd
以前はLinux などの Unix 系 OS で SysVinit 系が使われてきましたが、 systemd へ移行しています。

SysVinit 系では service コマンドが使われ、 systemd 系では systemctl が利用されます。

centos 7 の場合は、どちらのコマンドも一見あるように見えますが、 centos 7 の service コマンドは、 systemctl コマンドのただのラッパーシェルスクリプトです。

serviceコマンドの役割


serviceコマンドは、サービスの起動、再起動、停止、ステータスの確認を行うのに利用されます。

任意のサービスの状態を調べる方法

任意のサービスの状態を確認する場合には、service コマンドを利用すると簡単です。
service コマンドの第1引数にスクリプト名(サービス名)を指定し、第2引数に status を指定します。
service SCRIPT status

スクリプトは、 /etc/init.d に格納されています。 たとえば、 /etc/init.d/SCRIPT になります。 ssh であれば、 /etc/init.d/ssh になります。service コマンドを利用せずに、確認するには、 /etc/init.d のスクリプトを直接実行することで代替できます。

以下の例では、ssh のステータスを確認します。
/etc/init.d/ssh status

httpd のサービスの状態を調べる例

ここでは、古くからウェブサーバとして利用されているApache httpd サーバのサービスの状態を確認してみましょう。

service httpd status

サービスが動いてない例

サービスが稼働していない場合には、以下のように表示されます。
$ service ssh status
 * sshd is not running

もし動作していれば、次のように表示されます。
$ service ssh status
 * sshd is running

すべてのサービスのステータスを確認する方法

1つ1つのサービスではなく、システムのすべてのサービスのステータスを確認する方法もあります。すべてのサービスを確認する場合には、 --status-all オプションを利用します。
sudo service --status-all

systemctlコマンドでサービスのユニットを確認する


systemctl コマンドで、稼働中のサービスの一覧を表示することができます。

タイプがサービスのユニットをリスト表示する場合は、以下のコマンドを実行します。
systemctl list-units --type=service

サービスのユニットを表示した実行例を以下に示します。
$ systemctl list-units --type=service
  UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
  abrt-ccpp.service                  loaded active exited  Install ABRT coredump hook
  abrt-oops.service                  loaded active running ABRT kernel log watcher
  abrtd.service                      loaded active running ABRT Automated Bug Reporting Tool
  atd.service                        loaded active running Job spooling tools
  auditd.service                     loaded active running Security Auditing Service
  chronyd.service                    loaded active running NTP client/server
  crond.service                      loaded active running Command Scheduler
  dbus.service                       loaded active running D-Bus System Message Bus
  firewalld.service                  loaded active running firewalld - dynamic firewall daemon
  getty@tty1.service                 loaded active running Getty on tty1
● kdump.service                      loaded failed failed  Crash recovery kernel arming
  kmod-static-nodes.service          loaded active exited  Create list of required static device nodes for the current kernel
  libstoragemgmt.service             loaded active running libstoragemgmt plug-in server daemon
  lvm2-lvmetad.service               loaded active running LVM2 metadata daemon
  lvm2-monitor.service               loaded active exited  Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
  lvm2-pvscan@8:2.service            loaded active exited  LVM2 PV scan on device 8:2
  network.service                    loaded active exited  LSB: Bring up/down networking
  NetworkManager-wait-online.service loaded active exited  Network Manager Wait Online
  NetworkManager.service             loaded active running Network Manager
  polkit.service                     loaded active running Authorization Manager
  postfix.service                    loaded active running Postfix Mail Transport Agent
  rhel-dmesg.service                 loaded active exited  Dump dmesg to /var/log/dmesg
  rhel-domainname.service            loaded active exited  Read and set NIS domainname from /etc/sysconfig/network
  rhel-import-state.service          loaded active exited  Import network configuration from initramfs
  rhel-readonly.service              loaded active exited  Configure read-only root support
  rngd.service                       loaded active running Hardware RNG Entropy Gatherer Daemon
  rpcbind.service                    loaded active running RPC bind service
  rsyslog.service                    loaded active running System Logging Service
  smartd.service                     loaded active running Self Monitoring and Reporting Technology (SMART) Daemon
  sshd.service                       loaded active running OpenSSH server daemon
  sysstat.service                    loaded active exited  Resets System Activity Logs
  systemd-journal-flush.service      loaded active exited  Flush Journal to Persistent Storage
  systemd-journald.service           loaded active running Journal Service
  systemd-logind.service             loaded active running Login Service
  systemd-random-seed.service        loaded active exited  Load/Save Random Seed
  systemd-remount-fs.service         loaded active exited  Remount Root and Kernel File Systems
  systemd-sysctl.service             loaded active exited  Apply Kernel Variables
  systemd-tmpfiles-setup-dev.service loaded active exited  Create Static Device Nodes in /dev
  systemd-tmpfiles-setup.service     loaded active exited  Create Volatile Files and Directories
  systemd-udev-settle.service        loaded active exited  udev Wait for Complete Device Initialization
  systemd-udev-trigger.service       loaded active exited  udev Coldplug all Devices
  systemd-udevd.service              loaded active running udev Kernel Device Manager
  systemd-update-utmp.service        loaded active exited  Update UTMP about System Boot/Shutdown
  systemd-user-sessions.service      loaded active exited  Permit User Sessions
  systemd-vconsole-setup.service     loaded active exited  Setup Virtual Console
  tuned.service                      loaded active running Dynamic System Tuning Daemon
  vdo.service                        loaded active exited  VDO volume services
  vgauthd.service                    loaded active running VGAuth Service for open-vm-tools
  vmtoolsd.service                   loaded active running Service for virtual machines hosted on VMware

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

49 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

インストールされているユニットファイルを確認する


systemctl コマンドを用いて、インストールされているユニットファイルを確認できます。
systemctl list-unit-files


正しいユニット名がわからないときは、grep と組み合わせて探すこともできます。
$ systemctl list-unit-files |fgrep httpd
httpd.service                                 disabled

systemctlコマンドでユニットのステータスを確認する

systemd 系の systemctlコマンドで、サービスというかユニット (Unit) のステータスが確認できます。

service コマンドは、サービスのステータスを教えてくれましたが、かなり簡素な情報でした。実行している、とまっている、といった情報のみでした。service コマンドに比べると、 systemctl では、多くの情報が提供されています。

提供される情報の例を以下に示します。
  • いつ起動したか
  • どれぐらい稼働しているのか
  • 実行されているデーモンのコマンドのパス
  • デーモンのプロセスID
  • デーモンプロセスのログ
service コマンドとsystemctlコマンドでは、書式が少し異なりますのでご注意ください。
service サービス status
systemctl status ユニット

以下は、sshd のユニットに関するステータスを確認する例です。
[kaworu@localhost ~]$ systemctl status sshd
  sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2020-06-13 11:07:34 JST; 3min 23s ago
     Docs: man:sshd(8)
	   man:sshd_config(5)
 Main PID: 7130 (sshd)
   CGroup: /system.slice/sshd.service
	   └─7130 /usr/sbin/sshd -D

 6月 13 11:07:34 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
 6月 13 11:07:34 localhost.localdomain sshd[7130]: Server listening on 0.0.0.0 port 22.
 6月 13 11:07:34 localhost.localdomain sshd[7130]: Server listening on :: port 22.
 6月 13 11:07:34 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
 6月 13 11:09:07 localhost.localdomain sshd[7455]: Connection closed by 172.16.0.1 port 62925 [preauth]
 6月 13 11:09:22 localhost.localdomain sshd[7461]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.16.0.1  user=kaworu
 6月 13 11:09:25 localhost.localdomain sshd[7461]: Failed password for kaworu from 172.16.0.1 port 62933 ssh2
 6月 13 11:09:27 localhost.localdomain sshd[7461]: Accepted password for kaworu from 172.16.0.1 port 62933 ssh2
 6月 13 11:10:01 localhost.localdomain sshd[7503]: Accepted password for kaworu from 172.16.0.1 port 62949 ssh2
 6月 13 11:26:44 localhost.localdomain sshd[7621]: Accepted publickey for kaworu from 172.16.0.1 port 63864 ssh2: RSA SHA256:ZZ...省略

sshdのログが表示されています。ssh でパスワードログインに失敗したよ、パスワードログインしたよ、公開鍵認証でログインしたよ、といった情報も提供されます。


実行中でない httpdのステータスを確認してみましょう。 Active のところに、inactive(dead) と表示されています。
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

 6月 13 14:34:27 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
 6月 13 14:34:27 localhost.localdomain httpd[84211]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
 6月 13 14:34:28 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
 6月 13 14:34:44 localhost.localdomain systemd[1]: Stopping The Apache HTTP Server...
 6月 13 14:34:45 localhost.localdomain systemd[1]: Stopped The Apache HTTP Server.

比較用に httpd の起動中に systemctl でステータスを確認した結果も以下に掲載します。
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 土 2020-06-13 14:37:54 JST; 3s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 84247 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─84247 /usr/sbin/httpd -DFOREGROUND
           ├─84248 /usr/sbin/httpd -DFOREGROUND
           ├─84249 /usr/sbin/httpd -DFOREGROUND
           ├─84250 /usr/sbin/httpd -DFOREGROUND
           ├─84251 /usr/sbin/httpd -DFOREGROUND
           └─84252 /usr/sbin/httpd -DFOREGROUND

 6月 13 14:37:54 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
 6月 13 14:37:54 localhost.localdomain httpd[84247]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
 6月 13 14:37:54 localhost.localdomain systemd[1]: Started The Apache HTTP Server.

serviceコマンドが systemctlのラッパースクリプトの場合


centos 7 の場合、 service コマンドがあるように見えますが、実は、 systemctl を実行するためのただのラッパーシェルスクリプトになっています。実行してみると以下のようになります。 systemctl と結果は同じなので、省略して記載しています。
[kaworu@localhost ~]$ service sshd status
Redirecting to /bin/systemctl status sshd.service
 sshd.service - OpenSSH server daemon
 以下省略

サービスを自動起動する

サービスは、システム起動時(OSを起動したとき)に同時に起動することができます。サービスの自動起動は、CentOSでは systemctlで設定を行い、 Ubuntu の場合 update-rc.d で設定ができます。

以前([2012-10-21-1]) は、chkconfig を利用していました。
参照しているページ (サイト内): [2012-10-21-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー