8

start-stop-daemonを使用して、initスクリプトでJavaプログラムを適切に起動するのにかなりの時間を費やしています。私は init スクリプトを書きましたが、実行されているように見えますが、実行中のプログラムを表すプロセスはその後ありません。

これが私のinitスクリプトのスニペットです

#! /bin/sh
#
#

DAEMON="/usr/bin/java"
DAEMON_ARGS="-server -cp <bunch of RMI arguments and classpath stuff> -jar <absolute path>/myprog.jar"

PIDFILE="/var/run/myprog.pid"

case "$1" in
start)
    echo -n "Starting myprog"
    start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --startas "$DAEMON" -- $DAEMON_ARGS
    echo "."
;;

/etc/init.d 経由で起動しようとすると、次のようになります。

/etc/init.d# /etc/init.d/myscript start

myprog を開始しています/usr/bin/java を開始しています...

/usr/bin/java を開始するために切り離しています...完了。

.

その後、myprog.jar を実行している Java インタープリター プロセスは実行されていません。

--exec と --start のさまざまな組み合わせを試しましたが、ほぼ同じ結果が得られました。何が起こっているのかをもう少し可視化できれば、これを理解できると確信していますが、それを行う方法さえわかりません。

助言がありますか?

(組み込みARMプラットフォームでAngstromを実行しているため、Java Service Wrapperは実際には実行可能なオプションではありません。つまり、ARMで利用できるとは思いません)

行き詰まっているので、アドバイスをいただければ幸いです。

ありがとう。

4

2 に答える 2

14

試してみるべき2つのことは、最初に削除してから、代わりに次のよう--startasに使用してみてください。--exec

start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --exec "$DAEMON" -- $DAEMON_ARGS

2番目に使用しているので--background、オプションを指定してみて--chdirください。そうしないと、作業ディレクトリが/.

最終的に によって解決された私の問題を解決しようとして、あなたの質問に出くわしました。あなたの問題も解決する--chdirと思います。

于 2012-05-21T07:30:23.373 に答える
-4

実行して監視できる方法を探していますか?

msバッチdosプログラミングをまだ試しましたか?

例えば

@echo off
cd DirectoryOfFiles
echo "Starting up..."
java -Xmx512m mainFile
pause

mainFile = main.java? DirectoryOfFiles = すべてのクラス ファイルがあるディレクトリ。実行中のファイルが同じディレクトリの場合は、この行を削除するだけです

うまくいけば、これはあなたが求めているものです

于 2012-03-26T01:47:46.807 に答える