从xvfb-run启动的java子进程获取pid

时间:2013-02-26 16:49:15

标签: java linux pid xvfb

我正在尝试使用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

如果我删除了倒数第二行中的xvfb-run部分,一切正常(除了我没有显示和程序崩溃的部分)。我可能不得不玩“()”和“&amp;”但我不是专家。

程序SleepTest.jar是我编写的一个小程序,所以我不必处理真实的事情。它只能睡2分钟。

对于那些想知道我为什么使用xvfb-run的人来说,这是因为我需要开始使用SWT的java应用程序而且我的服务器上没有显示。

对于那些想知道为什么我需要进程的pid的人,这是因为我想创建一个init.d文件以便能够启动|停止我的应用程序的状态

那么有一种简单的方法可以获得它吗?

1 个答案:

答案 0 :(得分:-1)

使用xvfb-run(例如xvfb-run name_of_script.sh)运行整个脚本,然后从xvfb-run行中删除eval