我正在尝试使用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文件以便能够启动|停止我的应用程序的状态
那么有一种简单的方法可以获得它吗?
答案 0 :(得分:-1)
使用xvfb-run
(例如xvfb-run name_of_script.sh
)运行整个脚本,然后从xvfb-run
行中删除eval
。