`

linux中终止java程序/进程

阅读更多

在linux/unix下,你会怎么中止一个java应用或进程?

  多数人可能会回答 kill -9 pid,这是一种在多数情况下正确的做法。不过本文打算阐述使用kill -9带来的一些问题,并给出另一种标准的kill方式。

  标准中断信号

  在Linux信号机制中,存在多种进程中断信号(Linux信号列表 )。其中比较典型的有 SIGNKILL(9) 和 SIGNTERM(15).

  SIGNKILL(9) 和 SIGNTERM(15) 的区别在于:

  SIGNKILL(9) 的效果是立即杀死进程. 该信号不能被阻塞, 处理和忽略。

  SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。

  由此可见,SIGNTERM(15) 才是理论上标准的kill进程信号。

  那使用 SIGNKILL(9) 又有什么错呢?

  SIGNKILL(9) 带来的问题

  先看一段程序

public static void main(String[] args) {

  // 注册终止回调函数
  Runtime.getRuntime().addShutdownHook(new Thread() {
   @Override
   public void run() {
    shutdownCallback();
   }
  });
  
 
 private static void shutdownCallback() {}

分享到:
评论

相关推荐

    linux上通过sh方式启动java jar程序并做为守护进程

    在Linux系统中,Java应用程序通常以两种主要方式运行:直接通过命令行或作为守护进程(daemon)。本篇文章将深入探讨如何使用`sh`脚本来启动Java的JAR程序,并将其设置为守护进程,以便在后台持续运行,即使用户注销...

    Java通过进程名称杀进程

    本文将详细介绍如何使用Java代码实现基于进程名称的进程终止功能,特别是针对Windows操作系统下的`java-test.exe`进程。这不仅适用于开发者调试自身程序时的需求,也适用于系统管理员批量管理运行在Windows服务器上...

    linux查看进程和终止进程

    通过本文的学习,您应该掌握了如何使用`ps`命令来查看Linux系统中的进程信息以及如何使用`kill`命令来终止进程。这两种命令是Linux系统管理中非常实用的工具,对于日常运维工作具有重要意义。正确地使用它们可以帮助...

    java创建进程,及根据命令行、pid删除进程

    这些文件的代码分析可以帮助进一步理解Java进程管理的实践应用。 总结来说,Java提供了一套机制来创建和管理进程,但直接根据命令行参数或PID删除进程则需要借助操作系统特定的工具或API。理解和掌握这些概念对于...

    Linux 僵尸进程产生原因及解决方法

    为了遵循这些设计原则,不允许 Linux 内核在进程一终止后就丢弃包含在进程描述符字段中的数据。只有父进程发出了与被终止的进程相关的 wait() 类系统调用之后,才允许这样做。这就是引入僵死状态的原因:尽管从技术...

    Eclipse打包Java应用程序及在Linux系统上的部署运行[归纳].pdf

    Eclipse打包Java应用程序及在Linux系统上的...本文详细介绍了使用Eclipse将Java应用程序打包成JAR文件,并在Linux系统上部署和运行的步骤,包括创建JAR文件、在CentOS上部署和运行、设置环境变量、终止SMSAPI等步骤。

    Linux下独立执行Java程序.docx

    在Linux环境中独立执行Java程序,通常是因为需要在非容器环境下运行,这可能涉及到对系统资源的直接访问,例如配置数据库连接、管理日志文件或加载第三方库。在没有Web容器支持的情况下,我们需要手动配置和管理这些...

    Java中常用的Linux命令.docx

    2. 查看Java进程详细信息:`jps` 命令可以查看Java进程详细信息。 3. 查看Java堆栈信息:`jstack` 命令可以查看Java堆栈信息。 4. 查看Java内存信息:`jmap` 命令可以查看Java内存信息。 5. 查看Java垃圾回收信息:`...

    Linux下Tomcat的启动、关闭、杀死进程

    为了确认Tomcat是否已经成功关闭,可以使用`ps`命令查看是否有相关的Java进程还在运行。 ```bash ps -ef | grep tomcat ``` 如果没有输出与Tomcat相关的进程信息,则表示Tomcat已经成功关闭。 #### 三、强制...

    Java调用Linux命令

    当我们调用`Runtime.getRuntime().exec(command)`时,实际上是在当前Java进程中启动了一个新的子进程。这个子进程没有自己的控制台或终端窗口,其标准输入、标准输出和标准错误都会被重定向到父进程的相应流中。具体...

    僵尸进程介绍以及防范

    僵尸进程是计算机操作系统中的一种特殊状态,当一个进程执行完毕并退出,但其父进程尚未读取其退出状态时,这个已结束的进程就会成为僵尸进程。它的主要特征是进程已不再执行任何代码,但其进程描述符仍然存在于内存...

    Linux查看和终止进程[定义].pdf

    Linux 操作系统中,查看和终止进程是非常重要的任务。下面将对 ps 命令和 kill 命令进行详细的介绍。 1. ps 命令 ps 命令是 Linux 中最强大的进程查看命令。它可以确定当前有哪些进程正在运行、进程的状态、进程...

    守护进程(java)

    守护进程在Linux或Unix等类Unix系统中广泛存在,但Java作为一种跨平台的语言,其本身并不直接支持守护进程的概念。不过,由于Java的跨平台特性,开发者可以通过模拟实现类似的功能。 在Java中,我们可以利用线程...

    启动,停止某个某个java程序

    在Linux或Unix系统中,通常使用`jps`(Java进程查看器)命令找到Java进程ID,然后使用`kill`命令终止进程。一个简单的`stop.sh`脚本可能如下所示: ```bash #!/bin/bash # 查找Java进程 JAVA_PROCESS=$(jps | grep...

    操作系统进程调度算法和进程模拟超强悍java

    在Java中,可以利用线程类(Thread)或者实现Runnable接口来创建和管理进程。模拟进程调度涉及到: 1. 创建进程对象,每个对象代表一个待调度的任务。 2. 实现调度算法,根据选择的算法决定下一个执行的进程。 3. ...

    linux 进程管理

    Linux 进程管理是指在Linux操作系统中管理和控制进程的一系列操作和技术。进程是程序在计算机上的一次执行过程,是系统进行资源分配和调度的基本单位。Linux提供了丰富的工具来帮助用户和系统管理员监控和管理这些...

    Linux通用java程序启动脚本代码实例

    - 脚本中使用`kill`命令强制终止Java程序,但这种方式可能带来风险,如数据丢失或不完整。在生产环境中,应当添加额外的检查逻辑,确保在停止程序前完成必要的清理操作。 5. **脚本的通用性**: 这个脚本设计为...

    Linux上搭建Java_Web服务器

    - **终止Tomcat进程**:通过`kill`命令结束指定的进程ID。 - **命令行下访问网络**:利用`wget`命令从命令行访问网络资源。 - **RPM包管理**:使用`rpm -qa`命令列出已安装的所有RPM包;使用`rpm -e 包名`卸载指定的...

    进程崩溃自动重启

    在操作系统中,进程是程序在执行时的一个实例,拥有自己的内存空间和资源。当进程由于各种原因如内存溢出、非法指令、硬件故障或系统错误而崩溃时,服务可能会中断,导致用户受到影响。为确保服务的连续性和稳定性,...

    Linux下Shell编程实例

    在nis-(etc-profile)-kill的例子中,可能的脚本内容可能是检查NIS服务的状态,根据配置更新`/etc/profile`文件,然后终止与NIS相关的进程。具体的实现细节会根据具体需求而变化,但上述的核心概念和命令会在其中起到...

Global site tag (gtag.js) - Google Analytics