1

xvfb-run で開始された Java プロセスの PID を取得しようとしています。xvfb-run なしで起動するときは、$! を使用します。最後のバックグラウンド プロセスの PID を取得するには、xvfb-run を使用するとすぐに xvfb-run の PID を取得します。

コードは次のとおりです。

#! /bin/bash
logfile=/var/log/SleepTest.log
pidfile=/var/run/SleepTest.pid
command="java -jar /data/test/SleepTest.jar"
( eval exec -c xvfb-run $command < /dev/null >> $logfile 2>&1 ) &
$! > $pidfile

最後から 2 行目の xvfb-run 部分を削除すると、すべて正常に動作します (表示されない部分とプログラムがクラッシュする部分を除く)。おそらく「()」と「&」をいじる必要がありますが、私は専門家ではありません。

プログラム SleepTest.jar は私が書いた小さなプログラムなので、本物を扱う必要はありません。2分間しか寝ない。

なぜ xvfb-run を使用するのか疑問に思っている方のために説明すると、それは、起動する必要がある Java アプリケーションが SWT を使用しており、サーバーにディスプレイがないためです。

なぜプロセスの pid が必要なのか疑問に思っている方のために説明すると、それは、アプリケーションを開始|停止|ステータスできるように init.d ファイルを作成したいからです。

それを取得する簡単な方法はありますか?

4

1 に答える 1

-1

スクリプト全体をxvfb-run(eg xvfb-run name_of_script.sh) で実行し、行から を削除xvfb-runしますeval

于 2015-12-16T00:38:37.397 に答える