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

服务监控并重启动服务

 
阅读更多

闲着没事,写着玩

 

package bin;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;

public class PortListen implements Runnable{
   
    public static void main(String[] args) {
        //可以作为参数传递
        //要监控的端口
        String port="61616";
        //如果要开启这个端口需要使用的命令
        String cmd = "/app/apache-activemq-5.5.0/activemq-61616/bin/activemq-61616 start";

        Thread t = new Thread(new PortListen(port,cmd));
        t.start();
    }
    public PortListen(String port,String cmd){
        this.port = Integer.parseInt(port);
        this.cmd = cmd;
    }
    private int port;
    private String cmd;
   
    @Override
    public void run(){
        log("=================================");
        log("listen is running .....");
        log("listen port : "+port);
        log("open port cmd : "+cmd);
        log("=================================");
        while(true){
            try {
                //如果端口关闭了,那么就出现问题了
                if(isClosed(port)){
                    log("["+new Date()+"] The port "+port+" status is closed ,willl use the cmd to start it.");
                    exec(port,cmd);
                    log("["+new Date()+"] The port "+port+" status is start OK.");
                }
                Thread.currentThread().sleep(2000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private boolean isClosed(int port){
        boolean res = false;
        Socket socket = null;
        try {
            socket = new Socket("localhost",port);
            res = socket.isClosed();
        } catch (UnknownHostException e) {
            //本机操作,不会出现此异常
        } catch (IOException e) {
            //如果端口关闭则出现此异常
            res = true;
        }finally{
            if(socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    log("socket close exception : "+e.getMessage());
                }
            }
        }
        return res;
    }
    private int exec(int port,String cmd) throws InterruptedException, IOException{
        Runtime rc = Runtime.getRuntime();
        Process p = rc.exec(cmd);
        InputStream is = p.getInputStream();
        byte[] buff=new byte[128];
        StringBuffer sb = new StringBuffer();
        while(is.read(buff)!=-1){
            sb.append(new String(buff));
        }
        is.close();

        log(sb.toString());
        int i=0;
        //检查命令执行结果,应该增加一个参数,比如30秒后,还未开启则进行问题升级
        log("waitting...");
        while(isClosed(port)){
            Thread.sleep(1000);
        }
        log("started...");
        return 0;
    }
   
    private void log(String msg){
        System.err.println(msg);
    }
}

分享到:
评论

相关推荐

    Windows不能在本地计算机启动OracleDBConsoleorc

    可以通过Windows的服务管理器尝试手动启动服务。打开“服务”管理工具,找到"OracleDBConsoleorcl"服务,检查其状态和依赖关系,确保所有依赖服务都已启动。如果服务状态为"已停止",尝试手动启动,如果失败,查看...

    Nagios 监控Windows配置文档

    - 安装完成后勾选“Start service”启动服务,并完成安装(图2.6至图2.7)。 ##### 3.2 确认安装成功 - 检查服务管理器中NSClient++服务的状态是否为已启动,启动类型为自动(图3.1)。 ##### 3.3 安装后的配置 - ...

    zabbix监控tomcat

    将`catalina.sh`复制到`/etc/init.d`目录下并重命名为`tomcat`。 2. 在`tomcat`脚本中添加`#chkconfig:23451090`和`#description: Tomcat service`。 3. 设置环境变量`CATALINA_HOME`。 4. 使用`chkconfig --add...

    jar包在服务器启动的通用命令构建脚本.zip

    # 使用nohup启动应用并重定向输出到日志文件 nohup java $JAVA_OPTS -jar $APP_JAR > $LOG_FILE 2>&1 & # 获取应用的PID APP_PID=$(pgrep -f app.jar) echo "应用已启动,PID: $APP_PID" ``` 在这个脚本中,我们...

    pinpoint安装部署、监控tomcat、weblogic、webSphere手册

    它通过在应用程序启动时安装 agent 实现监控,无需对代码进行任何修改,能够最大限度地减少对应用性能的影响(据官方数据,性能损耗可控制在 3% 以内)。Pinpoint 主要具有以下特点: - **分布式事务追踪**:支持跨...

    centos 6.5 安装zabbix监控系统

    接着,启动MySQL服务: ``` /etc/init.d/mysqld start ``` 在MySQL中创建一个名为zabbix的数据库,并设置字符集为utf8。然后,为zabbix用户赋予对这个数据库的全部权限: ```sql mysql> grant all privileges on ...

    linux下串口监控的方法和工具

    你可以使用`socat`来监听串口并重定向到标准输出,或者与其他网络服务交互。 8. **`picocom`** Picocom 是一个轻量级的串口通信工具,它的设计目标是简单易用,适用于那些不需要复杂功能的场景。尽管功能相对较少...

    Oracle OEM无法启动问题的解决办法

    完成修改后,尝试重新启动Oracle监听服务。 **步骤 c:** 解决OEM启动问题: - 首先确保设置了正确的 `ORACLE_SID` 环境变量。可以使用命令 `set oracle_sid=orcl` 来设置。 - 使用 `emctl start dbcontrol` 命令...

    复制服务器安装配置手册.doc

    - 通过Sybase Central或者操作系统中的“服务”管理程序依次启动RSSD所在的ASE实例。 - 启动完成后,可以通过Sybase Central利用RSM服务进行复制系统的管理。 通过以上步骤,可以完成复制服务器的安装和配置,...

    Modbus协议-监控分析.pdf

    *监控已经被其他应用程序打开的串口(需要服务启动)。 *支持监控视图:列表视图、Line视图、Dump视图、终端视图、Modbus视图。 *支持监控串口所有的Write/Read数据流。 *支持监控所有串口IOCTL控制代码,并跟踪完整...

    sybase 复制服务器 12.5 For NT 安装手册

    - **SSL 服务**:决定是否使用 SSL 服务。 3. **使用 DSEDIT 添加接口条目**:例如`fshi-mobile,5050`,其中`5050`为任意未被占用的端口号。 4. **复制服务器系统数据库信息**: - **RSSD 存放 ASE 名称**:指定...

    linux中snmp服务安装配置.pdf

    Linux 中安装和配置 SNMP 服务可以帮助管理员监控和管理网络设备。本文将详细介绍 Linux 中安装和配置 SNMP 服务的步骤。 一、安装 SNMP 服务 首先,需要下载和安装 SNMP 服务的源码包。在本例中,我们使用的是 ...

    两主四从数据库服务搭建.docx

    - 使用 `chkconfig` 检查 MySQL 服务是否已成功添加,然后启动服务。 7. **主从复制配置**: - 在主服务器上创建需要同步的数据库和用户,并授权从服务器可以读取这些数据库。 - 在从服务器上配置连接主服务器的...

    如何建立控制与效率并重的内控管理体系.pptx

    对于投资项目的控制,不仅需要在项目启动前进行充分的分析和把握,如市场前景、财务回报、项目融资、运作管理、资金支持和法律事务等,还要在项目进行中建立有效的退出机制。这包括适时的战略分析,以判断企业是否有...

    8.dubbo-zookeeper.doc

    2. **集群管理**:Zookeeper可以监控服务提供者的状态,如果某服务提供者出现故障,Zookeeper会通知消费者切换到其他可用的服务提供者。 3. **负载均衡**:Dubbo可以根据Zookeeper中的服务列表进行负载均衡策略选择...

    SpringBoot2制作成Window服务的方法.docx

    在生产环境中,SpringBoot2应用通常需要以服务的形式运行,以确保系统启动时自动启动服务,并提供方便的管理和监控。本篇文章将详细讲解如何将SpringBoot2应用制作成Windows服务。 首先,我们需要对SpringBoot2项目...

    用Wrapper做java后台服务器程序

    此外,Wrapper还具备监控、日志记录、自动重启等高级功能,极大地提高了服务的健壮性和可维护性。 #### 二、使用Wrapper的具体步骤 以下是使用Wrapper将Java程序转换为后台服务器程序的详细步骤: 1. **下载并...

    Mysql双服务器互为主从和读写分离配置

    - **安装与启动服务**:通过`mysqld-install`命令安装MySQL服务,再用`net start mysql`启动服务。 ##### 3. 用户权限设置 - **授权用户**:为了实现主从复制,需要在主服务器上为远程用户授予权限。例如,创建一...

    tomcat部署war项目操作文档

    5. **启动服务**: 回到Tomcat的`bin`目录,运行`./startup.sh`启动Tomcat服务器。监控日志文件`catalina.out`,使用`tail -f catalina.out`查看实时日志,以确定项目是否启动成功。要停止查看日志,按`Ctrl + Z`。...

Global site tag (gtag.js) - Google Analytics