- PR -

起動スクリプトの書き方について

投稿者投稿内容
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2004-08-12 09:44
いつもお世話になっております。

起動スクリプトを作成しているのですが、書き方がわかりません。
Webを色々調べてみたのですが、よくわかりませんでした。

/etc/init.d/ のファイルを参照しながら見よう見まねで作成していまして、
以下のようなスクリプトを作成しました。




prog=hoge
RETVAL=0

start() {
echo -n $"Starting $prog: "
/usr/local/hoge/hoge
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/hoge
return $RETVAL
}




そこで、起動させてみたのですが、
# service hoge start
hogeを起動中:
#
となり、その後に出てくる[ OK ]
と表示させません。

スクリプト中の [ $RETVAL -eq 0 ] が関係していると思いますが、
その中の -eq というオプション?の意味がわかりません。

足りない説明があれば言ってください。
初心者ですが、よろしくお願いします。
Toshi
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 62
投稿日時: 2004-08-12 09:53
引用:

スクリプト中の [ $RETVAL -eq 0 ] が関係していると思いますが、
その中の -eq というオプション?の意味がわかりません。



man test
してください。
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2004-08-12 10:17
toshi さん こんにちは。

ありがとうございます。
-eq は数値のテストですね。
それにしてもなにも表示されないのはなぜでしょう?

書きもらしましたが、パソコン起動時にはちゃんと
hoge: [ OK ]
と表示されます。

うっちー
常連さん
会議室デビュー日: 2004/08/12
投稿数: 32
投稿日時: 2004-08-12 10:48
はじめまして。
こんにちは。

下記記述のように
/etc/init.d/functions を読み込んでいますでしょうか?

. /etc/init.d/functions


読み込んでいるのでしたら起動スクリプト内の

/usr/local/hoge/hoge

の記述部分を

daemon /usr/local/hoge/hoge

としたらでませんでしょうか?
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2004-08-12 12:09
うっちー さん こんにちは。

ありがとうございます。出来ました。

/etc/init.d/functions は読みこんでいます。

daemon /usr/local/hoge/hoge とすることで表示されました。

まだまだ勉強不足ですので、またなにかありましたら宜しくお願いします。

ありがとうございました。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-08-12 14:53
コード:
start() {

echo -n $"Starting $prog: "
/usr/local/hoge/hoge
RETVAL=$?
[ $RETVAL -ne 0 ] && failure
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/hoge && success
return $RETVAL
}



でどうでしょう。

function failure や success は /etc/rc.d/init.d/functions 中に
定義されてます。


[ メッセージ編集済み 編集者: はしもと 編集日時 2004-08-12 14:54 ]

[ メッセージ編集済み 編集者: はしもと 編集日時 2004-08-12 14:56 ]
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2004-08-12 15:21
はしもと さん こんにちは。

ありがとうございます。

はしもと さんのコードでもできました。
が、[ OK ] と表示されますが、今度は改行がされません。
hogeを起動中:
# [ OK ]

のようになってしまいます。

この場合の解決法はありますでしょうか?
うっちー
常連さん
会議室デビュー日: 2004/08/12
投稿数: 32
投稿日時: 2004-08-12 16:40
こんにちは。

start() {
echo -n $"Starting $prog: "
/usr/local/hoge/hoge
RETVAL=$?
[ $RETVAL -ne 0 ] && failure
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/hoge && success
     echo
return $RETVAL
}

echoをはさめたらいかがでしょうか?

スキルアップ/キャリアアップ(JOB@IT)