6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

systemdでデーモン化を簡単に行う

Last updated at Posted at 2022-05-26

linuxにおいて、systemdを用いたデーモン化を試してみる。

デーモンって何?

demon(悪魔)じゃなくてdaemon(神霊)らしい。

daemon(守護神)とはギリシャ神話に登場し、神々が煩わされたくないと考えた雑事を処理した存在である。同様にコンピュータのデーモンもユーザーが煩わされたくないタスクをバックグラウンドで実行する[3]。

Linux系においてバックグラウンドで常駐で働くプログラムのこと。
特にLinuxの起動処理やシステム管理を行う仕組みがsystemd。これをsystemctlコマンドで管理する。

テスト用のプログラム

毎秒hello worldするだけ。これを動かしてみよう。

testApp.js
setInterval(() => { console.log("hello, world!"); }, 1000);

これをhome/[ユーザー名]/test/testApp.jsと配置しておく。

nodeサーバーを動かしたいのが実用上での目的なので、これをnodeで実行していく。

Unit 定義ファイルを書く

ユニット定義ファイル、test.serviceを以下のように書き、etc/systemd/system/下に配置する。

test.service
[Unit]
Description=(任意の説明文)
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /home/[ユーザー名]/test/testApp.js
WorkingDirectory=/home/[ユーザー名]/test
KillMode=process
Restart=always


[Install]
WantedBy=multi-user.target

この時ExecStartには

ExecStart=nodejs本体のパス(/usr/bin/node) 動かしたいnode.js用のファイル

WorkingDirectoryには

WorkingDirectory=作業用ディレクトリ

を入れておく。

動かしてみよう

enableで自動起動有効化

sudo systemctl enable test.service

startでサービス起動。

sudo systemctl start test.service

このままではコンソール出力がされていないので、statusで状態を確認してみる。

systemctl status test.service

以下のような出力が得られた。毎秒hello worldしていることが確認できる。

May 26 23:12:01 instance-1 node[28439]: hello, world!
May 26 23:12:02 instance-1 node[28439]: hello, world!
May 26 23:12:03 instance-1 node[28439]: hello, world!
May 26 23:12:04 instance-1 node[28439]: hello, world!
May 26 23:12:05 instance-1 node[28439]: hello, world!
May 26 23:12:06 instance-1 node[28439]: hello, world!
May 26 23:12:07 instance-1 node[28439]: hello, world!
May 26 23:12:08 instance-1 node[28439]: hello, world!
May 26 23:12:09 instance-1 node[28439]: hello, world!

stopでサービス停止、disableで自動起動無効化ができる。

sudo systemctl stop test.service
sudo systemctl disable test.service

これで簡単なプログラムのデーモン化ができた。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?