首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >进程在Java中不会停止

进程在Java中不会停止
EN

Stack Overflow用户
提问于 2018-10-12 02:12:53
回答 1查看 275关注 0票数 0

我有以下问题.我以这种方式通过ProcessBuilder创建了一个ProcessBuilder

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private ProcessBuilder processBuilder;
private Process process;

    public void init() {
        processBuilder = new ProcessBuilder(
                "java", "-jar",
                "bam.jar",
                host,
        );
        processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
        processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
        try {
            process = processBuilder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我的职责是杀了一个人:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void stop() {
    process.destroy();
    try {
        process.waitFor(5, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    if (process.isAlive()) {
        try {
            Thread.sleep(5000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        process.destroyForcibly();
    }
}

但是杀死process有时有效,但有时不起作用。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 00:23:38

有类似的问题,通过将processBuilder.start()替换为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.Process process = java.lang.Runtime.getRuntime().exec("command java -jar some.jar");
proccess.destroy();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52777306

复制
相关文章
批量启动停止Java进程
解决的问题: 公司目前测试环境只有几台虚拟机,没有进行容器化管理,系统采用分布式架构,需要部署的程序很多。 一旦虚拟机重启或者故障就要适用Jenkins重启打包部署非常耗时和麻烦,遂编写该脚本用于定时抓取Java进程启动信息, 一旦出现故障,可以批量停止Java进程或者批量启动Java进程。
py3study
2020/01/02
1.7K0
如何优雅地停止Java进程
我们知道,Java程序的运行需要一个运行时环境,即:JVM,启动Java进程即启动了一个JVM。 因此,所谓停止Java进程,本质上就是关闭JVM。 那么,哪些情况会导致JVM关闭呢?
编程随笔
2019/06/27
6.4K0
如何优雅地停止Java进程
在 Linux 中如何强制停止进程?kill 和 killall 命令有什么区别?
在日常工作中,您会遇到两个用于在 Linux 中强制结束程序的命令;kill和killall。
网络技术联盟站
2022/04/02
3.6K0
在 Linux 中如何强制停止进程?kill 和 killall 命令有什么区别?
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。
非著名运维
2023/02/20
4.2K0
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
通用的停止进程bash脚本
printf "\033[1;33musage: $0 process_cmdline\033[m\n"
一见
2018/08/07
1.4K0
Hadoop启动,停止,与其中的守护进程的启动停止
start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack
星哥玩云
2022/07/04
1.8K0
nginx在windows系统中如何启动、重启、停止
查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停止或关闭nginx:nginx -s quit 配置文件nginx.conf修改重装载命令:nginx -s reload
似水的流年
2019/12/13
15.2K0
Java中停止线程的3种方式
其中 stop 方法为 @Deprecated 修饰的过期方法,也就是不推荐使用的过期方法,因为 stop 方法会直接停止线程,这样就没有给线程足够的时间来处理停止前的保存工作,就会造成数据不完整的问题,因此不建议使用。而自定义中断标识也有一些问题,所以综合来看,interrupt 方法才是最理想的停止线程的方法,接下来我们一起来看它们的具体差异。
磊哥
2022/05/09
8590
Java中停止线程的3种方式
请停止在Python中无休止使用列表
当你学习不熟悉的新东西的时候,一旦发现某样东西有效,那么你就会坚持使用它而放弃探索更多的可能性。在Python中,那样东西就是列表。
HuangWeiAI
2020/11/17
2.9K0
请停止在Python中无休止使用列表
java中如何停止(stop)一个线程
马克-to-win:java的官方文档说不要用stop方法来停止一个线程。因为stop方法太狠,太极端,会出现同步问题,使数据不一致。所以我们会通过设置标志,通过return, break,异常等手段来控制流程自然停止。
马克java社区
2021/04/09
7260
java中如何停止(stop)一个线程
使用 systemd 在 Linux 中管理启动、停止和重启服务
为了管理服务,你首先需要知道系统上有哪些服务可用。你可以使用 systemd 的命令列出 Linux 系统上的所有服务:
用户4988085
2021/09/15
8.2K0
使用 init 在 Linux 中管理启动、停止和重启服务
init 的命令和 systemd 的一样简单。 1、列出所有服务 要列出所有 Linux 服务,使用: service --status-all service –status-all 前面的 [ – ] 代表禁用,[ + ] 代表启用。 2、启动服务 要在 Ubuntu 和其他发行版中启动服务,使用命令: service <service-name> start 3、停止服务 停止服务同样简单。 service <service-name> stop 4、重启服务 如果你想重启服务,命令是: ser
用户4988085
2021/09/15
3.5K0
如何使用killall和kill命令来停止进程
killall是一个基于名称终止系统上运行进程的工具。kill则是终止基于进程ID号(PID)的进程。kill和killall还可以向进程发送特定的系统信号。
木纸鸢
2018/08/15
2.8K0
java启动和停止sh
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.5K0
在 Linux 上使用 jps 命令检查 Java 进程
在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。
用户9105998
2021/11/22
2.7K0
在 Linux 上使用 jps 命令检查 Java 进程
在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统上运行进程最简单的方法。
用户8989785
2021/10/13
2.8K0
WorkManager 在多进程应用中的高级用法
在 WorkManager 2.5 中,我们让多进程应用能够更容易地访问在指定进程中运行的特定 WorkManager 实例。
Android 开发者
2022/03/09
6030
在bash中检测进程是否正在运行
比如我们启动了一个这样的进程python -m SimpleHTTPServer 8000,我们想检测这个进程是否存在,可以这样。
技术小黑屋
2018/09/04
3.6K0
在 Linux 中找出 CPU 占用高的进程
你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令 和 ps 命令。出于一些理由,我更倾向于用 top 命令而不是 ps 命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。 1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程 在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。
用户2590762
2021/08/11
4K0
点击加载更多

相似问题

在Intellij中停止调试后,Java进程不会被终止

12

停止进程不会停止测试

20

Java进程在GC之前停止

12

Netbeans运行->停止生成不会停止正在运行的java进程

13

在Kubernetes中优雅地停止Java进程?

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文