2021.07.22  

【Linux】サービス名(プロセス名)を確認する方法 -CentOS-

Linux    

本記事ではLinux(CentOS)のサービス名(プロセス名)を確認する方法について記載しています。

今回は例としてPostgreSQL 12tomcat9.0のサービス名を確認します。

後半ではサービス名を変更する方法についても記載しています。

結論

結論としてはサービスを一覧するコマンドを実行して、名前の確認を行います。

CentOS7、8systemctl list-unit-files または、
ls /usr/lib/systemd/system/ls /etc/systemd/systemで確認を行えます。

CentOS6以前ではservice --status-allで確認することができます。

以降はCentOS8でサービス名を確認する例を紹介します。

systemctl list-unit-fileでサービス名を確認する

systemdのユニットファイル名を微妙に変えていたりすると、サービス名がわからなくなることがあります。

そういった場合、systemctl list-unit-filesコマンドを実行するとサービス名を一覧表できるので、そこから確認を行えます。

コマンドを実行すると以下のようなかたちでサービス(プロセス)が一覧表示されます。
ただ、このリストをそのまま探すのは少し面倒です。

[root@centos8 ~]# systemctl list-unit-files
# 中略
session-7.scope                            transient
arp-ethers.service                         disabled 
auditd.service                             enabled  
# 中略
postgresql.service                         disabled 
# 中略
tomcat9.service                             disabled 
# 省略

なんとなく名前がわかっている場合はgrepで対象サービスを探せます。

postgresのサービス名を確認する場合
[root@centos8 ~]# systemctl list-unit-files | grep pos
postgresql.service                         disabled 
postgresql@.service                        disabled 
tomcatのサービス名を確認する場合
[root@centos8 ~]# systemctl list-unit-files | grep tom
proc-sys-fs-binfmt_misc.automount          static   
tomcat9.service                            enabled  
[root@centos8 ~]# 

systemctl status サービス名 コマンドでpostgresとtomcatのサービスを確認します。

2行目にサービスの概要が表示されるので確認すると、
postgresでは、postgresql.service - PostgreSQL database server
tomcatでは、tomcat9.service - Apache Tomcat application server.と表示され、

このコマンドでそれぞれ操作するサービスが正しいことを確認できます。

postgres
[root@centos8 ~]# systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor>
   Active: inactive (dead)
tomcat
[root@centos8 ~]# systemctl status tomcat9
● tomcat9.service - Apache Tomcat application server.
   Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; disabled; vendor pre>
   Active: inactive (dead)

確認したサービスを起動してみます。下記例ではtomcat9のサービスを起動しています。

[root@centos8 ~]# systemctl start tomcat9
[root@centos8 ~]# systemctl status tomcat9
● tomcat9.service - Apache Tomcat application server.
   Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; enabled; vendor pre>
   Active: active (running) since Thu 2021-07-22 10:16:04 JST; 31min ago
  Process: 1055589 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/>
 Main PID: 1055596 (java)
    Tasks: 34 (limit: 11394)
   Memory: 72.3M
   CGroup: /system.slice/tomcat9.service
           └─1055596 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=>

 7月 22 10:16:04 centos8.localdomain systemd[1]: Starting Apache Tomcat applica>
 7月 22 10:16:04 centos8.localdomain systemd[1]: Started Apache Tomcat applicat>
lines 1-12/12 (END)

ユニットファイルを確認してサービス名を確かめる

こちらはsystemdのユニットファイルを確認する方法です。

ユニットファイルとは、ざっくり言うとサービス(プロセス)の起動停止スクリプトです。systemctlコマンドはこのファイルを元にサービスの起動停止を行います。

ユーザー独自のユニットファイルを作成することも可能です。

ユニットファイルの作成例
vi /usr/lib/systemd/system/tomcat9.service

参考: Tomcat 9.0のインストール・設定・Webアプリケーションデプロイ (CentOS 8)


システム系のユニットファイルはデフォルトで/usr/lib/systemd/systemに保存されています。
ユーザーが独自定義したものは/etc/systemd/systemに保存します。

ls /usr/lib/systemd/system/ を実行すると、次のようにsystemdのユニットファイルが表示されます。

[root@centos8 ~]# ls /usr/lib/systemd/system/
NetworkManager-dispatcher.service       rngd-wake-threshold.service
NetworkManager-wait-online.service      rngd.service
NetworkManager.service                  rpcbind.target
arp-ethers.service                      rsyslog.service
# 以下略

こちらも同様に、grepでなんとなくの名前で検索するとサービス名を確認できます。

[root@centos8 ~]# ls /usr/lib/systemd/system/ | grep pos
postgresql.service
postgresql@.service
[root@centos8 ~]# ls /usr/lib/systemd/system/ | grep tom
proc-sys-fs-binfmt_misc.automount
tomcat9.service

本当に自分の使用したいサービスなのか念のために確認するには、catでファイルの中身を確認します。
Descriptionの欄を確認すれば大体は判別できます。

[root@centos8 ~]# cat /usr/lib/systemd/system/postgresql.service
# 中略
[Unit]
Description=PostgreSQL database server
After=network.target
# 中略
Environment=PGDATA=/var/lib/pgsql/data
# 省略
[root@centos8 ~]# cat /usr/lib/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat application server.
After=network.target
# 中略
EnvironmentFile=/etc/sysconfig/tomca
# 省略

サービス名の変更

余談ですが、次の手順を行うとサービス名(プロセス名)の変更を行えます。

まず現在のサービス名を確認します。

[root@centos8 ~]# systemctl status tomcat9
● tomcat9.service - Apache Tomcat application server.
   Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; disabled; vendor pre>
   Active: inactive (dead)

次に現在のサービス名を変更します。

mv でユニットファイル名を変更したあと、ユニットファイルのリロード(systemctl daemon-reloadを行うことでサービス名を変更できます。

今回はサービス "tomcat9" を "tomcat" へ変更します。

[root@centos8 ~]# mv /usr/lib/systemd/system/tomcat9.service /usr/lib/systemd/system/tomcat.service
[root@centos8 ~]# systemctl daemon-reload

最後にサービス名の確認を行います。

[root@centos8 ~]# systemctl status tomcat
● tomcat.service - Apache Tomcat application server.
   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor pre>
   Active: inactive (dead)

参考サイト

Systemd入門(1) - Unitの概念を理解する
Tomcat 9.0のインストール・設定・Webアプリケーションデプロイ (CentOS 8)

CentOS7系と6系のコマンドの違いについて

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信