【问题标题】:Kill java process from terminal automatically [duplicate]自动从终端杀死java进程[重复]
【发布时间】:2017-07-03 05:32:35
【问题描述】:

是否可以在特定时间后自动从终端终止 Java 程序的执行(在运行而不是编译时)。 例如,我喜欢在 10 秒后停止以下操作:

java examples.Example

【问题讨论】:

  • 如果你知道进程 id (pid) 我想“sleep 10; kill pid”可以解决问题?
  • 这可能是可能的,但我认为这更多的是服务器管理问题。它取决于操作系统
  • 如何在同一行添加?

标签: java bash terminal kill-process


【解决方案1】:

如果不需要看进程的输出:

#!/bin/bash
{
    java examples.Example >/some/place.log &
    echo $!
    wait $!
} | {
    sleep 10
    kill $(read PID; echo $PID)
}

此脚本将在子 shell 中启动您的进程,将其 PID 传输到等待子 shell,子 shell 将等待 10 秒并将其终止。

如果你知道你的过程总是需要超过 10 秒,你可以简单地这样做:

java examples.Example >/some/place.log &
sleep 10
kill $!

【讨论】:

  • 不需要管道。 sleep/kill 进程既不需要也不关心其他命令的标准输出。
  • @chepner 管道是这样的,以便第一个子外壳可以将 PID 回显到第二个。它还允许并行创建两个子外壳。
  • 不需要。 java ... & java_pid=$!; (sleep 10; kill $java_pid) &.
  • @chepner 我的意图是让主脚本等待最多 10 秒(如果第一个子shell 提前完成,它会创建一个损坏的管道条件并导致第二个subshel​​l 在 10 秒结束前停止阻塞)。
猜你喜欢
  • 2021-01-19
  • 2018-09-14
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
相关资源
最近更新 更多