自动从终端杀死java进程[重复]

Posted

技术标签:

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

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

java examples.Example

【问题讨论】:

如果你知道进程 id (pid) 我想“sleep 10; kill pid”可以解决问题? 这可能是可能的,但我认为这更多的是服务器管理问题。它取决于操作系统 如何在同一行添加? 【参考方案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 秒结束前停止阻塞)。

以上是关于自动从终端杀死java进程[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android - 在后台杀死相机进程[重复]

Windows按端口号杀死进程[重复]

在 ProcessPoolExecutor 中杀死进程 [重复]

批处理文件或Powershell杀死进程[重复]

在 C# 中,如何可靠地杀死进程树 [重复]

抑制从衍生进程到终端的消息[重复]