从xvfb运行启动的java子流程中获取pid



我正在尝试获取一个用xvfb运行启动的java进程的PID。当在没有xvfb运行的情况下启动时,我使用$!以获得最后一个后台进程的PID,但一旦我使用xvfb运行,我显然就获得了xvfb的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运行部分,一切都正常(除了没有显示和程序崩溃的部分(。我可能不得不玩"(("one_answers"&",但我不是专家。

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

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

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

那么有没有一种简单的方法可以得到它呢?

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

相关内容

最新更新