自动从终端杀死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 提前完成,它会创建一个损坏的管道条件并导致第二个subshell 在 10 秒结束前停止阻塞)。以上是关于自动从终端杀死java进程[重复]的主要内容,如果未能解决你的问题,请参考以下文章