web-dev-qa-db-ja.com

/etc/rc.d/rc.localをテストして、起動時にコマンドが正常に開始されることを確認するにはどうすればよいですか?

tyrantmanager を使用して Tokyo Tyrant のいくつかのインスタンスを管理しています。正常に動作しています。

起動時に起動させたいので、/etc/rc.localに次のコマンドを追加します。

/usr/local/bin/tyrantmanager start --home=/data/tyrant/

(これはコマンドラインから実行する場合は問題ありません)

先週、サーバーがハングし、ハードリセットする必要があります。起動後、ログインして、noTokyoTyrantインスタンスが実行されていることを確認します。

次回の起動時に正常に起動することを確認するためにテストする方法はありますか?出力とエラーを>> /var/log/tyrantmanager.log 2>&1のログファイルにリダイレクトすることを除いて、起動に失敗し続ける場合は、「デバッグ」に対して他に何ができますか。

PS:initスクリプトを書くことはできますが、それでもこのケースの根本原因を調べたいと思います。


編集:私は開発サーバーでテストし、同じ結果を得ました。以下はログファイルです。

15:02:17  INFO : Starting test : ttserver -Host 192.168.x.x -port 1978 -thnum 8 -tout 15 -dmn -pid /opt/tyrant/instances/test/test.pid -log /opt/tyrant/instances/test/log/test.log -le -ulog /opt/tyrant/instances/test/ulog -ulim 1g -rts /opt/tyrant/instances/test/test.rts /opt/tyrant/instances/test/data/test.tch#opts=ld#mode=wc
/usr/local/lib/Ruby/gems/1.8/gems/logging-1.5.2/lib/logging/logger.rb:429: command not found:  ttserver -Host 192.168.x.x -port 1978 -thnum 8 -tout 15 -dmn -pid /opt/tyrant/instances/test/test.pid -log /opt/tyrant/instances/test/log/test.log -le -ulog /opt/tyrant/instances/test/ulog -ulim 1g -rts /opt/tyrant/instances/test/test.rts /opt/tyrant/instances/test/data/test.tch#opts=ld#mode=wc 

私はRubyに精通していないので、 "command not found"エラー( logger.rb )でRubyが発生した理由がわかりません。多分私はstackoverflowについて質問します。

3
quanta

次のようになります。

  • /etc/rc.localの実行時に、ttserverがパスにありません。 /etc/rc.localで環境が正しく設定されていることを確認してください。あなたが言うように、それはコマンドラインから機能します。
  • Rubyスクリプトは、パラメータなしでコマンド文字列全体を単一のコマンドとして呼び出しています。

私は最初の疑いがあります。

1
MikeyB

最近使用しているディストリビューションに関係なく、私は自分のレッスンを学びました。起動時に何かが発生することを確認したい場合は、サーバーを再起動して何が起こるかを確認します。サーバーのメンテナンスウィンドウをスケジュールし(必要な場合)、その時点で数回のテスト再起動を実行するだけです。それが機能するかどうかを確認します。

過去には、「これは次の再起動時に開始される」と確信していましたが、その後は開始されません。

8

[素早い回答]


rc.localを手動で実行するには、rc.localパス(cd /etc/)に移動し、次のようにします。

$ Sudo ./rc.local

実行中にエラーが発生した場合は、その前に実行してください。

$ Sudo chmod +x rc.local
3
Benyamin Jafari