CentOS 7でrrdtoolに含まれている、rrdcachedを使う場合、
自動的にsystemd用のファイルを作成してくれないので、
自分で書くことになると思う。
とりあえず、以下の内容で動作させてみた。
何か突っ込みあれば、頂きたく。
[Unit]
Description=RRDTool Cache Daemon
[Service]
ExecStart=/usr/bin/rrdcached -l 0.0.0.0:42217 -w 300 -z 300 -f 600 -b /myhome/rrdfile -p /myhome/run/rrdcached.pid -F -j /myhome/journal
ExecStop=/bin/kill -12 ${MAINPID}
Restart=always
Type=forking
[Install]
WantedBy=multi-user.target
ExecStopで、意図的に-12(SIGUSR2)を渡している。
rrdcachedを一般的なSIGTERMで止めようとすると、なかなか終了してくれない事象にぶつかった。
このなかなか終了してくれない、という状態でshutdown -h nowとか、OSをシャットダウンしようとしても、
rrdcachedの終了に待たされて、OSがシャットダウンしない。
OSのシャットダウン時に、すぐに終了して欲しかったので、SIGUSR2を送り、即終了するようにした。
注意したいのは、起動オプションに、必ず-j パスを渡す必要がある点。
これを渡しておかないと、SIGUSR2ですぐに終了したとき、
まだ実際のファイルに書き込んでいないデータが、すべて消滅する。
-j パスを指定しておくと、rrdcachedは、受け取ったコマンドを
一旦ファイルに保存する。
次回起動時に、-j パスにファイルが存在する場合、
このファイルをいい感じに読み込み、処理を再開できる。