gpt4 book ai didi

java - 如何从命令行停止执行 Java 程序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:38 24 4
gpt4 key购买 nike

我的主要领域是 .Net,但最近我与 Java 有关。我必须在 Java 中创建一个 shell 实用程序,它可以在后台运行,在指定的持续时间后读取一些数据库记录并进行进一步处理。这是一种调度程序。现在我没有什么顾虑了:

如何使这项工作成为一项服务。我想通过 shell 脚本执行它,该实用程序应该开始运行。当然,控件应该返回到调用脚本。

其次,最终我可能想停止这个进程的运行。如何实现?

我知道这些是基本问题,但我真的不知道从哪里开始以及什么选项最适合我。

有什么帮助/建议吗?

最佳答案

我会使用调度程序或服务来运行程序。但是,如果您希望使用 bat 文件并以编程方式执行此操作,我在下面概述了一种可能的方法:

在您的 Java 程序中,您可以通过编程方式获取 PID,然后将其写入文件:

public static void writePID(String fileLocation) throws IOException
{
// Use the engine management bean in java to find out the pid
// and to write to a file
if (fileLocation.length() == 0)
{
fileLocation = DEFAULT_PID_FILE;
}
String pid = ManagementFactory.getRuntimeMXBean().getName();
if (pid.indexOf("@") != -1)
{
pid = pid.substring(0, pid.indexOf("@"));
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileLocation));
writer.write(pid);
writer.newLine();
writer.flush();
writer.close();
}

然后您可以编写一个停止 .bat 文件来终止 Windows 中正在运行的程序。你可以这样做:

setlocal
IF EXIST app.pid FOR /F %%i in ('type app.pid') do TASKKILL /F /PID %%i
IF EXIST app.pid DEL app.pid
endlocal

当然,app.pid就是上面Java方法写的文件。

我不确定您如何能够编写启动 Java 程序并在终止时恢复控制的脚本。我很想知道是否有人对此有解决方案。

关于java - 如何从命令行停止执行 Java 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com