Go言語で daemon を作ってみる その2
▼ daemon 起動設定(CentOS 6)

まずは起動スクリプト。

起動用スクリプト

これを /etc/init.d 配下にコピーして、権限 755 root:root を与えておきます。
go言語以外を対象としたものならどこにでもおいてありますが
それとほぼ同一のものです。

唯一異なるのは、この後に出てくる
「daemon プロセスを起動するためのgo言語のプログラム」が
daemon プロセスとして起動した子プロセスの PID を、標準出力に出力するところ
です。
戻り値として 子プロセスの PID を戻す場合は、少し変更が必要です。

あとはこれを chkconfig --add で daemon としてやればOKです。

▼ daemon プロセス起動用の go言語のプログラム(CentOS 6)

daemon 起動設定(CentOS 6)で起動できるのは
init を親プロセスとして、root権限 の daemon 起動用のプロセスです。
他の UID を持つユーザでプロセスを起こす場合は、ワンクッション必要です。
また、daemon 本体のプロセスを起こした後は、
直ちにプロセスを終了する必要があります。

上記の文章の説明ではわかりづらいので簡単な絵を描くと

init → daemon 起動設定 → daemon 起動用プロセス → daemon 本体プロセス

と、流れていく感じになります。

そこで登場するのが「daemon プロセス起動用の go言語のプログラム」です。

上記の daemon 起動設定では、このプログラムを実行しています。
実際これを実行すると、「daemon プロセス起動用の go言語のプログラム」自体の
プロセスは消滅し、代わりに init を親とする daemon 本体のプロセスが残ります。

具体的に何を行っているのかは、サンプルソールのコメントを参照。

daemon プロセス起動用の go言語のプログラム

【2017/05/29】 golang / Revel | トラックバック(0) | コメント(0) | page top↑
<<Go言語で daemon を作ってみる その3 | ホーム | Go言語で daemon を作ってみる その1>>
コメント
コメントの投稿











管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://hidenov.blog4.fc2.com/tb.php/1367-6bdda223
| ホーム |