闲着没事,写着玩
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的服务管理器尝试手动启动服务。打开“服务”管理工具,找到"OracleDBConsoleorcl"服务,检查其状态和依赖关系,确保所有依赖服务都已启动。如果服务状态为"已停止",尝试手动启动,如果失败,查看...
- 安装完成后勾选“Start service”启动服务,并完成安装(图2.6至图2.7)。 ##### 3.2 确认安装成功 - 检查服务管理器中NSClient++服务的状态是否为已启动,启动类型为自动(图3.1)。 ##### 3.3 安装后的配置 - ...
将`catalina.sh`复制到`/etc/init.d`目录下并重命名为`tomcat`。 2. 在`tomcat`脚本中添加`#chkconfig:23451090`和`#description: Tomcat service`。 3. 设置环境变量`CATALINA_HOME`。 4. 使用`chkconfig --add...
# 使用nohup启动应用并重定向输出到日志文件 nohup java $JAVA_OPTS -jar $APP_JAR > $LOG_FILE 2>&1 & # 获取应用的PID APP_PID=$(pgrep -f app.jar) echo "应用已启动,PID: $APP_PID" ``` 在这个脚本中,我们...
它通过在应用程序启动时安装 agent 实现监控,无需对代码进行任何修改,能够最大限度地减少对应用性能的影响(据官方数据,性能损耗可控制在 3% 以内)。Pinpoint 主要具有以下特点: - **分布式事务追踪**:支持跨...
接着,启动MySQL服务: ``` /etc/init.d/mysqld start ``` 在MySQL中创建一个名为zabbix的数据库,并设置字符集为utf8。然后,为zabbix用户赋予对这个数据库的全部权限: ```sql mysql> grant all privileges on ...
你可以使用`socat`来监听串口并重定向到标准输出,或者与其他网络服务交互。 8. **`picocom`** Picocom 是一个轻量级的串口通信工具,它的设计目标是简单易用,适用于那些不需要复杂功能的场景。尽管功能相对较少...
完成修改后,尝试重新启动Oracle监听服务。 **步骤 c:** 解决OEM启动问题: - 首先确保设置了正确的 `ORACLE_SID` 环境变量。可以使用命令 `set oracle_sid=orcl` 来设置。 - 使用 `emctl start dbcontrol` 命令...
- 通过Sybase Central或者操作系统中的“服务”管理程序依次启动RSSD所在的ASE实例。 - 启动完成后,可以通过Sybase Central利用RSM服务进行复制系统的管理。 通过以上步骤,可以完成复制服务器的安装和配置,...
*监控已经被其他应用程序打开的串口(需要服务启动)。 *支持监控视图:列表视图、Line视图、Dump视图、终端视图、Modbus视图。 *支持监控串口所有的Write/Read数据流。 *支持监控所有串口IOCTL控制代码,并跟踪完整...
- **SSL 服务**:决定是否使用 SSL 服务。 3. **使用 DSEDIT 添加接口条目**:例如`fshi-mobile,5050`,其中`5050`为任意未被占用的端口号。 4. **复制服务器系统数据库信息**: - **RSSD 存放 ASE 名称**:指定...
Linux 中安装和配置 SNMP 服务可以帮助管理员监控和管理网络设备。本文将详细介绍 Linux 中安装和配置 SNMP 服务的步骤。 一、安装 SNMP 服务 首先,需要下载和安装 SNMP 服务的源码包。在本例中,我们使用的是 ...
- 使用 `chkconfig` 检查 MySQL 服务是否已成功添加,然后启动服务。 7. **主从复制配置**: - 在主服务器上创建需要同步的数据库和用户,并授权从服务器可以读取这些数据库。 - 在从服务器上配置连接主服务器的...
对于投资项目的控制,不仅需要在项目启动前进行充分的分析和把握,如市场前景、财务回报、项目融资、运作管理、资金支持和法律事务等,还要在项目进行中建立有效的退出机制。这包括适时的战略分析,以判断企业是否有...
2. **集群管理**:Zookeeper可以监控服务提供者的状态,如果某服务提供者出现故障,Zookeeper会通知消费者切换到其他可用的服务提供者。 3. **负载均衡**:Dubbo可以根据Zookeeper中的服务列表进行负载均衡策略选择...
在生产环境中,SpringBoot2应用通常需要以服务的形式运行,以确保系统启动时自动启动服务,并提供方便的管理和监控。本篇文章将详细讲解如何将SpringBoot2应用制作成Windows服务。 首先,我们需要对SpringBoot2项目...
此外,Wrapper还具备监控、日志记录、自动重启等高级功能,极大地提高了服务的健壮性和可维护性。 #### 二、使用Wrapper的具体步骤 以下是使用Wrapper将Java程序转换为后台服务器程序的详细步骤: 1. **下载并...
- **安装与启动服务**:通过`mysqld-install`命令安装MySQL服务,再用`net start mysql`启动服务。 ##### 3. 用户权限设置 - **授权用户**:为了实现主从复制,需要在主服务器上为远程用户授予权限。例如,创建一...
5. **启动服务**: 回到Tomcat的`bin`目录,运行`./startup.sh`启动Tomcat服务器。监控日志文件`catalina.out`,使用`tail -f catalina.out`查看实时日志,以确定项目是否启动成功。要停止查看日志,按`Ctrl + Z`。...