私はLinux初心者で、マシンの起動時に.shファイルを起動するにはどうすればいいか知りたいです。基本的に、Linux OSを搭載したサーバーマシンがあり、システムの再起動/クラッシュ時にjbossアプリケーションを実行したいと考えています。
S99jBossServers
rc2.dにリンクを追加し/etc/rc.d/init.d/jBossServers.sh
、完全な許可(777)を与えました。jBossServers.sh
の内容はjBossServers.sh
次のとおりです
#!/bin/sh
#
# chkconfig: 2345 80 30
# description:
#
RETVAL=0
start () {
/root/batch/startSikkimCA.sh
/root/batch/startSikkimSp.sh
}
stop () {
/root/batch/stopSikkimCA.sh
/root/batch/stopSikkimSp.sh
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
start
;;
*)
start
;;
RETVAL=$?
esac
exit $RETVAL
正しいかどうかは分かりませんが、2つのパスは
start() と stop()
正しいのですが、マシンを再起動してもアプリケーションは起動しません。
答え1
答え2
スクリプトが開始されているかどうか (たとえば、touch /var/tmp/startup.script
スクリプトに入力されているかどうか) を確認してください。スクリプト内のすべてのコマンドが起動時の検索パッチ内にありますか?
ランレベル 2 は異常に思えます。GUI のない Linux では 3 が標準のはずです。使用しているディストリビューションとバージョンは何ですか?
答え3
/etc/inittab
のような行を探します。id:3:initdefault:
数字はおそらく 3 または 5 ですが、2 または 4 の場合もあります。その行の数字はデフォルトのランレベルです。おそらく 2 ではないので、rc2.d 内のスクリプトは実行されません。
行の番号と一致する rcN.d ディレクトリにスクリプトを配置しますinitdefault
。
原則的には、rc.local のほうが良い選択ですが、rc.local はディストリビューションによって大きく異なるため (ディレクトリの場合もあれば、スクリプトの場合もあり、まったく設定されていない場合もあります)、ディストリビューションを知らなければ、正しいランレベルに配置する方が簡単です。システムman rc.local
で何が表示されるか試してみてはいかがでしょうか。システムが rc.local をディレクトリとしてサポートしている場合は、そこにスクリプトを配置して、ランレベルを気にする必要はありません。
また、スクリプトが root によって所有され、権限が 755 (誰でも実行できるようにする場合) または 744 であることを確認してください。
答え4
起動スクリプトの追加
この方法は、Red Hat、Fedora、Ubuntu (パッケージ chkconfig とサービスをインストール)、Suse で機能します。
スクリプトを /etc/init.d にコピーする必要があります (適切なディレクトリまたは適切なディレクトリへのリンクのいずれかなので、同じように動作します)
sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh
次に、システムの起動プロセスに追加する必要があります。必要なリンクをすべて作成する代わりに、chkconfig を使用します (Ubuntu では最初にパッケージをインストールします)
sudo chkconfig add jBossServers.sh
スクリプトの見出しを読むと、このスクリプトにはすでに、ランレベルと優先度に関する chkconfig の情報が含まれています。これで問題ありません。次回再起動すると、JBoos が起動します。
今すぐ始めてみるのもいいでしょう
sudo service jBossServers.sh start
注意: システムが chkconfig または service を見つけられないというエラーを出す場合は、先に /sbin/ で呼び出してみてください。例
sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start