我正在尝试获取以 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 部分,一切正常(除了我没有显示和程序崩溃的部分)。我可能不得不玩“()”和“&”,但我不是专家。
SleepTest.jar 程序是我编写的一个小程序,因此我不必处理真实的事情。它只睡2分钟。
对于那些想知道我为什么使用 xvfb-run 的人,这是因为我需要启动的 java 应用程序使用 SWT,而我的服务器上没有显示。
对于那些想知道为什么我需要进程的 pid 的人,这是因为我想创建一个 init.d 文件以便能够启动|停止|状态我的应用程序
那么有没有简单的方法来获取呢?