人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(ポイント出します : 500pt)
linuxでサービス起動に関する質問です。

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

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

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

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

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


●質問者: のの
●カテゴリ:コンピュータ
✍キーワード:hoge Linux root サービス スクロール
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● mutsuju
●80ポイント

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

◎質問者からの返答

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

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

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

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


2 ● jippu
●80ポイント

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

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

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

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

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

◎質問者からの返答

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

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

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


3 ● YukiharuYabuki
●80ポイント

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

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

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

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

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

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

◎質問者からの返答

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

ちなみにVine3です。

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


4 ● くまっぷす
●80ポイント

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するなりなんなりする」ですね)

◎質問者からの返答

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

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

もうへろへろですorz


5 ● くまっぷす
●150ポイント

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で立ち上がるときに起動するようにセットされます。

◎質問者からの返答

ktkr!?

startだけで十分です!

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

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

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ