xinetdを使って特定のサービスを起動させてみる
他のサーバのnginxの設定を書きかえてreloadするようなことができないかを検討中です。
xinetdを使って外部から要求のあったときにだけサービスを起動させることができれば、実現可能かと思ったので検証してみようと思います。
今回は、xinetdを使って特定のサービスを起動させるところまでやってみます。
xinetdの説明は下のリンクがわかりやすかったです。
mosuke5.hateblo.jp
サービスの窓口のサービスを作成
/etc/xinetd.d/ の下にファイルを作成します。
今回は/etc/xinetd.d/test というファイルを作成しました。
service test { disable = no socket_type = stream wait = no user = root protocol = tcp server = /bin/sh server_args = /usr/local/bin/test log_on_failure += USERID port = 12345 }
サービスの窓口を叩くと、server_argsで設定したサービスを起動させることができます。
起動させるサービスを作成
/usr/local/bin/test を下のように記述してみました。
#!/bin/sh echo test awk '{print $0}'
ファイルを作成したら権限を変更しておきましょう。
sudo chmod 755 /usr/local/bin/test
xinetdを起動
xinetdを起動させて、指定したポートをLISTENしているか確認してみます。
sudo /etc/init.d/xinetd start sudo netstat -tan | grep 12345 → tcp 0 0 :::12345 :::* LISTEN
要求を送ってサービスを起動
いよいよncで要求を送ってみます。
echo hoge | nc localhost 12345 →test hoge
文字列を渡して、特定のサービスが動いたことが確認できました。
最後に
他のサーバのnginxの設定を書きかえてreloadするところは、次回試してみます。
気が向いたら、また書きます。