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

标签 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 部分,一切正常(除了我没有显示和程序崩溃的部分)。我可能不得不使用“()”和“&”,但我不是专家。

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

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

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

那么有没有简单的方法可以获取呢?

最佳答案

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

关于java - 从使用 xvfb-run 启动的 java 子进程获取 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094701/

相关文章:

linux - 我的 ffmpeg 流保存到哪里?

linux - bash 中的静默 while 循环

linux - 长时间运行的进程远程终止?

Java/JAXB : Unmarshall XML attributes to specific Java object attributes

java - Spring Cloud Stream Kafka 生产者消息

linux - 如何在 CentOS 上将 glibc 从 2.12 版升级到 2.14 版?

linux - 获取上次执行命令的 PID(无背景)

c - 使用 sigqueue 和 SIGUSR1 将子 pid 发送给父亲

java - 添加属性文件后使 Eclipse 更快

java - 循环退出条件有问题吗?