お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-03-14 10:48:46

uchan21
メンバ
登録日: 2008-12-25

RTPproxy 起動オプションを付けて起動する方法

いつもお世話になっております。

サーバプロセス(今回は"RTPproxy"というものです)を起動オプションを付けて起動する方法について教えてください。
rtpproxyの起動オプションには次のようなものがあります。

usage: rtpproxy [-2fvF] [-l addr1[/addr2]] [-6 addr1[/addr2]] [-s path]
        [-t tos] [-r rdir [-S sdir]] [-T ttl] [-L nfiles] [-m port_min]
        [-M port_max] [-u uname[:gname]]

このうち、-M と -m オプションを付けて、例えば、以下の様に起動したいと思っています。

rtpproxy -u 30000 -M 31000

通常、サーバプロセスを起動させる場合、/etc/init.d/rtproxy start のように実行すると思います。
そこで、

/etc/init.d/rtproxy start -u 30000 -M 31000

を実行すれば、起動オプション付き起動になるでしょうか?
実際にやってみて、psでプロセスを確認たところ、以下のようになりました。

$ sudo /etc/init.d/rtpproxy start -m 30000 -M 31000
Starting RTP relay: rtpproxy.
$ ps -efwlj | grep rtpproxy
5 S rtpproxy  8811     1  8811  8811  0  80   0 -   742 poll   10:00 ?        00:00:00 /usr/sbin/rtpproxy -s unix:/var/run/rtpproxy /rtpproxy.sock -u rtpproxy rtpproxy -p /var/run/rtpproxy/rtpproxy.pid

一方、起動スクリプトを使用せず、/usr/sbin/rtpproxyを直接実行して、同様にpsでプロセスを確認した結果が以下です。

$ sudo /usr/sbin/rtpproxy -m 6000 -M 6200
rtpproxy: WARNING!!! Running this program as superuser is strongly not recommended, as it may pose serious security threat to your system. Use -u option to run as an unprivileged user or -F to surpress this warning.
$ ps -efwlj | grep rtpproxy
1 S root      9579     1  9579  9579  0  80   0 -   449 poll   10:33 ?        00:00:00 /usr/sbin/rtpproxy -m 6000 -M 6200
0 S ucym      9581  7263  9580  7263  0  80   0 -   761 pipe_w 10:33 pts/0    00:00:00 grep rtpproxy

両者は違うように見えますが、やはり違うでしょうか?どちらも私の望む動作にはなってないような気がします。

さらに、起動スクリプト /etc/init.d/rtpproxy の中身を見たところ、起動オプション設定らしき部分がありました。

DAEMON_OPTS="-s $CONTROL_SOCK -u $USER:$GROUP -p $PIDFILE $EXTRA_OPTS"

これを修正して、

DAEMON_OPTS="-s $CONTROL_SOCK -u $USER:$GROUP -p $PIDFILE $EXTRA_OPTS -m 6000 -M 6200"

とすれば、いいように思えます。
なんとなく、起動スクリプト /etc/init.d/rtpproxy は変更しない方がいいような気がするんですが、これは正しい対処でしょうか?
実際に動作させれば分かるのでは?と思われるかもしれませんが、まだ正常に動作させるところまでたどり着けてませんので、
質問させていただきました。どうぞ、よろしくお願い致します。

・起動スクリプト /etc/init.d/rtpproxy の中身:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rtpproxy
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: RTP Proxy
# Description:       Relay for VoIP media streams
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=rtpproxy
DESC="RTP relay"
DAEMON=/usr/sbin/$NAME
USER=$NAME
GROUP=$USER
PIDFILE="/var/run/$NAME/$NAME.pid"
PIDFILE_DIR=`dirname $PIDFILE`
CONTROL_SOCK="unix:$PIDFILE_DIR/$NAME.sock"

test -x $DAEMON || exit 0
umask 002

# Include defaults if available
if [ -f /etc/default/$NAME ] ; then
    . /etc/default/$NAME
fi

DAEMON_OPTS="-s $CONTROL_SOCK -u $USER:$GROUP -p $PIDFILE $EXTRA_OPTS"

if [ ! -d "$PIDFILE_DIR" ];then
    mkdir "$PIDFILE_DIR"
    chown $USER:$GROUP "$PIDFILE_DIR"
fi

set -e

case "$1" in
  start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
    echo "$NAME."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
    sleep 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

オフライン

 

#2 2009-03-14 14:35:48

STGSAGWAN
ゲスト

Re: RTPproxy 起動オプションを付けて起動する方法

/etc/default/rtpproxy の EXTRA_OPTSに書くのがよいでしょう。

. /etc/default/$NAME というコード箇所で /etc/default/rtpproxy を読んでますから。

 

#3 2009-03-14 18:24:41

uchan21
メンバ
登録日: 2008-12-25

Re: RTPproxy 起動オプションを付けて起動する方法

STGSAGWAN様 ありがとうございます。無事解決しました。

/etc/default/rtpproxy の EXTRA_OPTSに書くのがよいでしょう。

/etc/default/rtpproxyを探したら見つかりました。
中身は以下のようになってました。思わず素晴らしいと言ってしまいました(笑)

    # Defaults for rtpproxy

    # The control socket.
    #CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock"
    # To listen on an UDP socket, uncomment this line:
    #CONTROL_SOCK=udp:127.0.0.1:22222

    # Additional options that are passed to the daemon.
    EXTRA_OPTS=""

EXTRA_OPTS="-m 30000 -M 31000"と書いて起動したら、うまく行きました。

シェルスクリプトについては全然知識が無かったのですが、今回勉強して少し理解できました。
ただ、ドットコマンドについては、もうひとつ、しっくりきません。

どうも、ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB