blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

Systemd で簡単なサービスを定義してみる

概要

いろいろな Linux ディストリビューションで採用されてきている Systemd を理解するために、 hello world を一秒ごとに標準出力へ吐き出す簡単なサービスを定義し、 journalctl でログを確認してみた。

内容は↑の記事とほぼ同様になっているが、 下記では標準出力へそのまま hello world を出力しているので、 jounarlctl でログを確認できる点で異なる。

Systemd のバージョン確認

使ったディストリビューションは Ubuntu 16.04 で、Systemd の バージョンは 229。

/usr/local/bin/hello-daemon.sh

1秒ごとに標準出力に hello world を出力するプログラム /usr/local/bin/hello-daemon.sh を用意する。

↓で実行権限をつける。

/etc/systemd/system/hello.service

hello.service を定義するために /etc/systemd/system/hello.service を用意する。

[Unit]
Description = hello daemon

[Service]
ExecStart = /usr/local/bin/hello-daemon.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

hello.service の自動起動を有効にする

↓で hello.service の自動起動を有効化できる。

↓で状態の確認。

hello.service の開始

↓で hello.service を開始できる。

↓状態の確認。

hello.service のプロセスをkillしてみる

hello-daemon.sh の PID が 21220 だったので、↓で kill してみる。

systemctl status で確認すると新しいプロセスが PID 21442 で立ち上がったことがわかる。

journalctl でログの確認

hello.service のログは journalctl を使って↓で確認できる。 (-n オプションで5行に制限している。)

hello.service の停止

↓で hello.servce を停止できる。

↓プロセスが止まったことを確認できた。

あとがき

ログの処理は journald で一括して設定できるので楽になった? かも。 (journald の設定ファイルは /etc/systemd/journald.conf にある。)

参考