`
ayuayufan
  • 浏览: 29153 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何在Linux下管理java进程

阅读更多

上一篇中详细介绍了如何在Windows系统下面如何管理java进程,本篇介绍一下如何在Linux下管理java进程。

 

由于在Linux下ps命令的强大,在linux下并不需要像Windows系统那样费力的区分不同的java进程。但是在Linux下,需要对进程进行这样的管理:一个商用的服务系统,需要提供的是24小时不间断的服务,但是由于各种原因,有可能会造成当前java进程对应的JVM的crash。因此,本篇介绍如何写一段shell脚本方便的启动、停止、守护一个java进程。

 

首先,这段shell应该有start和stop的功能。如何stop当前我想停止的进程在Linux下有很多方法,我用的方法是,启动时将进程对应的process id记录到一个文件中,在停止这个进程时,从文件中读取process id进行kill。同时,做一个crontab,不停在系统中查找文件中的process id对应的进程是否存在,如果不存在,重新启动该进程。

 

启动和停止脚本:ctrl.sh

#!/bin/sh
#
# start/stop the Service

#
# do some init here
#
case "$1" in
'restart')
    
	# first Stopping the Service
    PID=`sed -n 1p pidfile`  #get pid from file
    if [ ! -z "$PID" ] ; then
                echo "Stopping the Service, begin killing ${PID}"
         kill ${PID} >/dev/null 2>&1
         sleep 2
    fi
	# second Starting the Service
    if [ some condition here ]; then 
         echo "Starting the Service"
         java -classpath some_class_path_here -jar helloworld.jar & 
         echo $! > pidfile   #record process id to file
    fi
    ;;
'stop')
    # Stopping the Service
    PID=`sed -n 1p pidfile`  #get pid from pidfile
    if [ ! -z "$PID" ] ; then
    		echo "Stopping the Service, begin killing ${PID}"
         kill ${PID} >/dev/null 2>&1
    fi
    ;;
*)
    echo "Unmarkable usage: $0 {restart|stop}"
    ;;
esac 

 然后再做一个crontab需要执行的脚本:crntb.sh

#!/bin/sh
PID=`sed -n 1p pidfile`
cmd=`ps -e|grep $PID`    #get process with the given pid
indx=`expr index "$cmd" "java"`   #whether the string 'cmd' contains 'java'

if [ "$indx" = "0" ]; then
  /...path of ctrl.sh.../ctrl.sh restart
fi

 最后在crontab中每分钟执行上面的crntb.sh

crontab -e

 

0-59 * * * * * /....path of crntb.sh.../crntb.sh

 这样就可以每分钟查看当前pid对应的进程是不是还在,如果不在了,就重新启动。

 

当然,光用这几小段代码是不足以维护一个完整的商用程序的。但是,做到了这点,最起码万里长征的第一步已经迈出去了。

分享到:
评论

相关推荐

    Linux查看处理Java进程

    Linux查看处理Java进程

    linux下查看java进程下线程占用cpu情况

    在Linux系统中,监控Java进程及其线程的CPU使用情况是进行性能调优的重要环节。以下是一些关于如何实现这一目标的关键知识点。 1. **`ps` 命令**: - `ps` 是一个用于报告当前系统中进程状态的命令。基本用法如 `...

    Linux下启动JAVA

    在Linux环境下启动Java应用程序是许多开发人员和系统管理员日常任务的一部分。Java的可移植性使得它能在各种操作系统上运行,而Linux作为服务器平台的广泛使用,使得了解如何在该平台上启动Java变得至关重要。本文将...

    Linux上的Java程序开发

    在《Linux上的Java程序开发》这本书中,作者Carl Albing和Michael Schwarz深入探讨了如何在Linux环境下进行Java应用程序的开发工作。本书不仅适合初学者了解Linux环境下的基本概念和命令,同时也为有经验的开发者...

    linux下运行java程序

    在Linux环境下,使用`jps`命令可以查看正在运行的Java进程,`jstat`和`jinfo`等工具则用于监控和调试Java应用程序的性能和配置。 总的来说,Linux下的Java程序运行涉及到环境配置、程序编译、权限管理以及进程控制...

    JAVA 进程在64位LINUX下占用巨大内存的分析.doc

    根据给定的文件信息,我们可以看到,JAVA 进程在 64 位 LINUX 下占用了巨大内存,达到 11G,已分配地址空间更是 17G。这是一个非常严重的问题,因为它可能会导致系统崩溃和性能下降。 首先,让我们来分析 HEAP 配置...

    Linux平台 进程 监控 自动重启 恢复脚本, java, springboot 通过

    Linux平台 下 进程监控自动 重启 恢复脚本, 测试 centos平台下 java, springboot 通过

    linux下启动Java程序和杀死java进程shell脚本

    linux下启动Java程序和杀死java进程shell脚本

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

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

    Java通过进程名称杀进程

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

    JAVA进程管理

    在"JAVA进程管理"项目中,可能通过模拟不同的进程优先级,观察它们在相同环境下执行的顺序和时间,从而理解优先级对进程执行的影响。 4. **图形界面展示**:为了形象演示这一过程,项目可能采用了Java的Swing或...

    linux 进程管理

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

    纯Java实现的Linux任务管理器

    总的来说,这个"纯Java实现的Linux任务管理器"是一个全面的系统监控工具,它不仅为用户提供了一种方便的方式来管理和监控Linux系统的进程,同时也为Java开发者提供了一个学习和研究GUI编程以及系统管理API的好案例。...

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

    > /path/to/logfile.pid`将Java进程的PID(进程ID)写入到指定的日志文件,这样我们就可以在需要时找到并管理这个进程。 7. 最后的`tail -f`命令用于实时查看应用的日志输出,但这不是必需的,可以根据实际需求决定...

    Linux下Java环境的安装和配置

    在Linux系统中安装和配置Java环境是开发和运行Java应用程序的基础步骤。本文将详细阐述这一过程,包括下载、安装、配置环境变量以及验证Java安装是否成功。首先,我们需要明确Java的版本选择,通常推荐使用Oracle ...

    linux下C和java通过管道通信

    本篇将详细讲解如何利用管道实现在Linux下的C和Java程序之间的数据传递。 首先,让我们了解管道的基本概念。管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,通常是父子进程或...

    Linux操作下的进程管理利器 Supervise

    在Linux操作系统中,进程管理是系统管理员和开发者日常工作中不可或缺的一部分。标题提到的"Linux操作下的进程管理利器 Supervisord"是指一个强大的Python编写的进程管理工具,它可以帮助用户管理和控制多个后台进程...

    在Linux系统下用java执行系统命令实例讲解

    在Linux系统下,Java编程语言提供了丰富的API来执行操作系统级别的命令。这主要通过`java.lang.Runtime`类和`java.lang.ProcessBuilder`类实现。本文将深入讲解如何在Java程序中调用Linux命令,并通过实例来阐述这一...

    JAVA实现Linux中word转换pdf

    在Java编程环境中,我们可以利用各种库来实现在Linux系统中将Word文档转换为PDF。这个过程通常涉及到对文件格式的理解,以及对操作系统调用的掌握。以下是一个详细的知识点介绍: 1. **Java与Linux交互**: Java...

    Linux系统中守护进程的创建方法.pdf

    守护进程的启动方式有三种:在系统启动时由系统初始化脚本启动,由作业规划进程 crond 定时或定期启动,管理员或有执行权限的用户直接在 shell 上启动。守护进程的创建步骤包括脱离终端和会话期、更改当前目录、关闭...

Global site tag (gtag.js) - Google Analytics