【问题标题】:Bash: How to use $! while a process is still running?Bash:如何使用 $!当一个进程仍在运行时?
【发布时间】:2012-06-26 09:04:52
【问题描述】:

我目前正在启动一个 Java 进程,并尝试使用 $! 获取其 PID,并将其写入文件。问题是,当我启动 Java 进程时,它会进入自己的“控制台”。 (我不确定这叫什么)。

在我停止进程并退出其“控制台”之前,我无法将此 $! 写入文件,此时 PID 将无用。

我将如何启动 Java 进程并在不结束它的情况下获取它的 PID? 我正在使用echo $! > pidfile.pid 将Java 进程的PID 写入文件。

【问题讨论】:

  • 在启动 Java 进程的行尾是否有 &?在不显示一些代码的情况下,我们所能做的就是猜测。
  • 您是否在后台运行 java,以便在 java 启动时调用脚本继续运行?
  • 做它喜欢 (java -jar jarname&); pid=$!
  • 对——@pizza 给出的返回的是包含 shell 的 PID,而不是后台进程的 PID。丹尼斯给出的是通常的正确的事情,所以开始的地方是诊断为什么它似乎不适合你。
  • 您在示例中给出的语法是否完全您在做什么?当你尝试它时它会给出任何错误消息吗?

标签: bash


【解决方案1】:

编写小型Java包装器启动器java.sh(例如):

#!/bin/bash
pidfile=/some/path/pidfile.pid
echo $$ > $pidfile
exec java $@

简而言之,shell 脚本写出它的 PID,然后用您传递给 shell 脚本的所有参数的 java 进程替换它自己。然后只需在你的脚本中用 java.sh 替换 java...当然你可以通过导出的变量传递 pidfile

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2014-06-22
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    相关资源
    最近更新 更多