(ポイント出します : 500pt)

linuxでサービス起動に関する質問です。

あるサービス "hoge" を rootでログインして
# ./hoge -option1 -option2
と打って起動しています。
(このサービスは 起動すると、コンソールにサービスの状態を
適宜オートで表示スクロールするような仕様です。)

現状は リモートでログインしているので、リモートのコンソールを閉じると
rootはログアウトされ、サービスも終了してしまいます。

・ 質問 1:
linuxを起動するだけで自動でサービスを稼動させるには
どうしたら良いのでしょうか・・・。

・ 質問 2:
オートで起動できた場合、そのサービスを終了させるには
どうしたら可能ですか?

実際に解決できた場合、ポイントを 500pt差し上げます・・・
どうかよろしくお願いいたします・・・
 

回答の条件
  • 1人5回まで
  • 登録:2006/07/10 17:58:05
  • 終了:2006/07/14 00:24:15

回答(5件)

id:mutsuju No.1

mutsuju回答回数551ベストアンサー獲得回数352006/07/10 18:11:20

ポイント80pt

1) /where/is/hoge -opt1 -opt2 % > /tmp/logfile

な起動スクリプトを適当な場所に仕込んでおく

2)ps -Af |grep hoge

kill PID

参考

http://www.atmarkit.co.jp/flinux/rensai/theory11/theory11a.html

http://homepage2.nifty.com/cs/linux_command/command/ps.html

id:s_mitsuki

適当な場所とは?参考を読まないと個別の環境には合わせられないということでしょうか。

さらにやさしくおねがいしますw

なぜなら脳みそがとろけそうなほどlinux鯖をいじくり倒してそろそろ60時間が経過します、この間睡眠は 2時間、もう思考能力が落ちてます、

もちろん、この件で60時間悩んでるわけではありませんけども・・・

2006/07/10 20:13:15
id:jippu No.2

jippu回答回数61ベストアンサー獲得回数42006/07/10 18:11:31

ポイント80pt

[ランレベルの変更]でしょうか。

これを6にすると、システムの起動時にそのサービスも起動すると思います。

変更方法などはこちらが参考になると思います。

システムサービスのランレベルを調べたり変更するには

見当違いでしたらすみません。

id:s_mitsuki

コレをすると前の回答のようなスクリプトを書く必要はないのですか?

オプション付きでも平気ですか?

さらにてとりあしとり願いますw

2006/07/10 20:15:33
id:YukiharuYabuki No.3

YukiharuYabuki回答回数50ベストアンサー獲得回数22006/07/10 18:26:48

ポイント80pt

お使いのLinuxディストリビューションの作法によりますが、

/etc/rc?.d/とか/etc/init.d/の下に起動時に動かすデーモンの

設定方法が書いてあります。参考にするとよいでしょう。

止めかたも、そのプログラムの作法によりますが kill シグナルを

送ったり、起動したプログラムのオプションで止める方法も指定できたりとさまざまです。

なお、rootでデーモンを動かしていると乗っ取りをされたときにサーバが乗っ取られてしまうので可能ならroot以外の権限で動かないか、プログラムを作られた方に確認してみてはいかがですか?

id:s_mitsuki

うーん、どちらにも実行ファイルしか無かったです。

ちなみにVine3です。

おっしゃるとおりですね、root権限の変更は今後検討します。

2006/07/10 20:18:38
id:Kumappus No.4

くまっぷす回答回数3784ベストアンサー獲得回数1852006/07/10 18:46:52

ポイント80pt

distributionによっていくつかやりかたがあります。

まずdebian系の場合、start-stop-daemonというコマンドを使って、/etc/init.d/以下にURLで示したような手順でスクリプトを書くのが正しいやりかたです。

http://www.si-linux.co.jp/wiki/cat/index.php?%BC%AB%BA%EE%A5%A2%...

RedHat系の場合は同じような感じですが、

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13852&am...

のような書き方をします。

その後にchkconfig --level 35 hogehoge(スクリプト名) on で起動されるように登録します。

スクリプトですが、/etc/init.d以下には他のスクリプトファイルがすでにいくつも入っているのでそれをコピーして書き直すのが早いでしょう。

停止する場合はそれぞれそのスクリプトを使って

/etc/init.d/hogehoge stop のように実行することで、保存されたプロセスIDを元にkillしてくれるので楽です。(2の答えですが、「起動したときにプロセスIDをどこかにしまっておいて、後でそれを参照してkillするなりなんなりする」ですね)

id:s_mitsuki

すみません、開いただけで返信しないで力尽きてしまいました。

スクリプトをパクリパクリ作ってみたんですがまともに動きません。

もうへろへろですorz

2006/07/11 12:47:13
id:Kumappus No.5

くまっぷす回答回数3784ベストアンサー獲得回数1852006/07/11 02:13:22

ポイント150pt

Vine 3.xとのことなのでRedHat系のやりかたでよいと思います。

なので/etc/init.d/以下に置くスクリプトは、例えば

#! /bin/sh

#

# hoge

#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/usr/local/bin/hoge (ここはhogeのあるパスにする)

NAME=hoge (表示される文字列、適当に)

DESC="hoge daemon" (表示される文字列、適当に)

test -f $DAEMON || exit 0

set -e

case "$1" in

start)

echo -n "Starting $DESC: "

$DAEMON -option1 -option2 2>&1 > /dev/null &

echo "$NAME."

;;

stop)

echo -n "Stopping $DESC: "

killall hoge 2>&1 > /dev/null

echo "$NAME."

;;

#;;

restart)

echo -n "Restarting $DESC: "

killall hoge 2>&1 > /dev/null

sleep 1

$DAEMON 2>&1 > /dev/null &

echo "$NAME."

;;

*)

N=/etc/init.d/$NAME

echo "Usage: $N {start|stop|restart}" >&2

exit 1

;;

esac

exit 0

でいけると思います(stopのほうはめんどくさいんで、とりあえずkillallで殺すようにしています)。これを/etc/init.d/hogeとして置いてください。attributeは-rwxr-xr-x root:rootなどでいいでしょう。

テストのためには

/etc/init.d/hoge start

で起動するかどうかpsなりログを見るなりして確認し、

/etc/init.d/hoge stop

で停止を確認します。

そして

http://vinelinux.org/manuals/server.html

/sbin/chkconfig --level 35 hoge on

でマルチユーザモードでコンソールのとき、及びマルチユーザモードでX Windowで立ち上がるときに起動するようにセットされます。

id:s_mitsuki

ktkr!?

startだけで十分です!

うがあああ、試したいけど只今外出先ですorz

これで解決していれば、500ptじゃ少ないかもしれませんね、もっと出します。

回答者制限を "回答者1人につき5件まで" に引き上げました、補足がありましたらまたお願いいたします・・・

-------------

結局解決できませんでした・・・

サーバを立ち上げるたびに手動でバックグラウンドで動かして、logout しています・・・

ご助言有難う御座いました。

2006/07/14 00:22:40
  • id:Kumappus
    うーむ、それは残念。
    何がどう失敗しているのかがわかれば解決の手はあると思うんですが…。
    例えば最後の回答のスクリプト、これを手動で実行した場合にどうなるか?エラーは出るのか?などなど…。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません