今日はむかーしドコかのブログにメモったものを書き移します。
Linuxサーバにて自作プログラムをデーモンとして動かす方法についてです。
今回は例として外部サーバから80000ポートにTCP接続があればそのサーバのロードアベレージを返すデーモンプログラムを作成します。
まずはロードアベレージを返すプログラムを作成。
# vim call_loadavg.sh出来ました。
#!/bin/sh
cat /proc/loadavg | awk '{ print $1 }'
# chmod +x call_loadavg.sh
これをデーモンに登録します。
# vim /etc/services
# 一番最終行にでも
call_loadavg 80000/tcp # my_daemon
// 新規作成
# vim /etc/xinetd.d/call_loadavg
service call_loadavg
{
disable = no
socket_type = stream
wait = no
user = root
protocol = tcp
server = /bin/sh
server_args = /path/to/call_loadavg.sh
log_on_failure += USERID
port = 80000
# IP制限した場合は
only_from = x.x.x.x
}
この項目は
disable no...使用 yes...使用しないなどです。詳しくはhttp://www.linux.or.jp/JM/html/xinetd/man5/xinetd.conf.5.htmlにて。
socket_type stream...ストリーム型 dgram...データグラム型 raw...IPへ直接制御が必要な場合
wait yes...シングルスレッドで動作 no...マルチスレッドで動作
user 実行ユーザ名
protocol プロトコル
server 実行プログラム名
server_args 実行プログラムに渡される引数
log_on_failure サーバ起動、終了時に出力するログの種類(複数組み合わせ可)
PID...プロセスID HOST...リモートホストアドレス USERID...リモートユーザのユーザID EXIT...サーバが終了したことを出力 DURATION...サービスセッションの時間
port プログラムが動作するポート番号
次にxinetdを再起動
# service xinetd restart以上でぇぇえす。
0 件のコメント:
コメントを投稿