
Ubuntu日本語フォーラム

ログインしていません。
いつもお世話になっております。
サーバプロセス(今回は"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
オフライン
/etc/default/rtpproxy の EXTRA_OPTSに書くのがよいでしょう。
. /etc/default/$NAME というコード箇所で /etc/default/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"と書いて起動したら、うまく行きました。
シェルスクリプトについては全然知識が無かったのですが、今回勉強して少し理解できました。
ただ、ドットコマンドについては、もうひとつ、しっくりきません。
どうも、ありがとうございました。
オフライン