Systemd を利用してサービスを追加・登録する

Linux

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

自作、ソースからコンパイルしたプログラムをsystemdにサービス登録をしたい

この疑問に回答します。

自作のプログラムや、ソースコードからコンパイル(OSが実行できる状態)したプログラムは手動でsystemdにサービス登録を行う必要があります。手順をまとめます。

自作プログラムを作成

まずは、簡単なプログラムを作成し、systemd に登録しサービスとして起動させます。1秒ごとに時間を記録するプログラムファイルです。

# vi /usr/local/bin/test.sh
#!/bin/sh
while true
do
   date >> /tmp/test.log
   sleep 1
done

実行権限を与えます。

# chmod +x /usr/local/bin/test.sh

Systemd で利用するためのUnit定義ファイルを作成する

systemd で利用するためにUnit定義ファイルを作成します。

# vi /etc/systemd/system/test.service
[Unit]
Description = test daemon

[Service]
ExecStart = /usr/local/bin/test.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

別の内容ですが、ソースからコンパイルしたプログラムをsystemdに登録した記事がありますので参考にしてください。

Unit定義ファイルをServiceとして認識したか確認する

systemdは指定のディレクトリにUnit定義ファイルを保存すると認識します。

# systemctl list-unit-files --type=service |grep test
test.service                           disenabled

「systemctl list-unit-files –type=service」コマンドを実行し表示されるとsystemdが正しく認識しています。あとはサービスを登録・起動するだけでそす。

Systemdからサービスを登録・起動させる

systemdにサービスを登録し起動させます。

# systemctl enable test
# systemctl start test

念のためにサービスの状態を確認します。

# systemctl status test
● test.service - test daemon
   Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: di>
   Active: inactive (dead)

Jun 22 14:08:47 [mydomain] systemd[1]: /etc/systemd/system/test.service:3: Invalid section header '[Service] ExecStart = /usr/local/bin/test.sh'
Jun 22 14:09:03 [mydomain] systemd[1]: /etc/systemd/system/test.service:3: Invalid section header '[Service] ExecStart = /usr/local/bin/test.sh'
Jun 22 14:09:33 [mydomain] systemd[1]: /etc/systemd/system/test.service:3: Invalid section header '[Service] ExecStart = /usr/local/bin/test.sh'
Jun 22 14:09:50 [mydomain] systemd[1]: /etc/systemd/system/test.service:3: Invalid section header '[Service] ExecStart = /usr/local/bin/test.sh'

自作したプログラムの出力結果も確認します。

# tail  -f /tmp/test.log
Mon Jun 22 14:01:46 JST 2020
Mon Jun 22 14:01:47 JST 2020
Mon Jun 22 14:01:48 JST 2020
Mon Jun 22 14:01:49 JST 2020

 

systemdでサービス一覧を確認する記事があるますので、参考にしてください。

 

 

以上、「Systemd を利用してサービスを追加・登録する」という記事でした。