博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java服务器检测与远程重启
阅读量:6550 次
发布时间:2019-06-24

本文共 5892 字,大约阅读时间需要 19 分钟。

第一步

  •  在服务器上配置jre环境。
  • 去oracle官网下载 ,然后在环境变量里添加jre路径。

第二步

  • 我使用的是PHPStudy集成环境
  • 注册apache 和 mysql服务

#切换到相对应的目录 #apacheapache httpd -k install -n "服务名"#mysqlmysqld --install 服务名复制代码

  • 写一个启动服务start .cmd 

cd /d C:\phpStudy\PHPTutorial\Apache\binnet start apachecd /d C:\phpstudy\PHPTutorial\MySQL\binnet start mysql复制代码
  • 需要写一个重启电脑的closeSystem.cmd

    shutdown -r -t 1复制代码

第三步

  • 把start.cmd放到注册表的启动项中实现开机启动
  • cmd输入以下命令  /v 后面是注册名 随意 路径改成相应的

#注册服务启动项 reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v add /d C:\regRun\start.cmd /f 复制代码

第四步

获取服务器信息类

package com.boolib.service;import java.net.InetAddress;import java.net.UnknownHostException;import java.text.DecimalFormat;import java.util.Properties;public class MySystemInfo {	private String osName;	private String osArch;	private String osVersion;	private String address;	private int totalMemoryJVM;	private int idleMemoryJVM;	private int totalMemory;	private int maxMemory;	private int idleMemory;	private String use;	InetAddress address1;	Properties pro;	String info;	public MySystemInfo() {						try {			pro = System.getProperties();			address1 = InetAddress.getLocalHost();			this.osName = pro.getProperty("os.name");			this.osArch = pro.getProperty("os.arch");			this.osVersion = pro.getProperty("os.version");			this.address = address1.getLocalHost().toString();			this.totalMemoryJVM = (int)Runtime.getRuntime().totalMemory()/1024;			this.maxMemory = (int)Runtime.getRuntime().maxMemory()/1024;		} catch (UnknownHostException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	public int getIdleMemoryJVM() {		return idleMemoryJVM;	}	public void setIdleMemoryJVM(int idleMemoryJVM) {		this.idleMemoryJVM = idleMemoryJVM;	}	public String getUse() {		return use;	}	public void setUse(String use) {		this.use = use;	}	        //获取服务器信息	public MySystemInfo getInfo() {		setIdleMemoryJVM( (int)Runtime.getRuntime().freeMemory()/1024);		float d = (1-(float)this.idleMemoryJVM / (float)this.totalMemoryJVM)*100;		DecimalFormat decimalFormat=new DecimalFormat(".00");		use=decimalFormat.format(d)+"%";                return this;	}	@Override	public String toString() {		return "服务器名称=" + osName + ", 服务器架构=" + osArch + ", 服务器版本号=" + osVersion + ",  IP地址="				+  address.substring(address.lastIndexOf('/')+1) +  ", JVM空闲内存=" + idleMemoryJVM + ",  JVM总内存=" + totalMemoryJVM 				+", 使用率"+use+"\n"				;	}}复制代码

信息输出线程类

package com.boolib.service;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Reader;import java.net.ServerSocket;import java.net.Socket;public class WriteSocket extends Thread{		ServerSocket ssocket;	Socket socket;	BufferedReader reader;		BufferedWriter writer;	final int  PORT=65530;	MySystemInfo mInfo ;	String flag;	public WriteSocket() {		try {			this.ssocket = new ServerSocket(PORT);			this.mInfo= new MySystemInfo();				} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	@Override	public void run() {		try {			this.socket = ssocket.accept();		} catch (IOException e1) {			// TODO Auto-generated catch block			e1.printStackTrace();		}		while(true) {							try {					writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));			writer.write(mInfo.getInfo().toString());			writer.flush();			Thread.sleep(5000);					} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}}			}	}复制代码

信息接收线程类

package com.boolib.service;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class ReadSocket extends Thread {			BufferedReader reader;	String flag;	Socket socket;	ServerSocket ssocket;	final String cmd="C:\\closeSystem.cmd.lnk";	public ReadSocket() {		try {			this.ssocket = new ServerSocket(65531);		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		}	@Override	public void run() {		try {			socket=	ssocket.accept();			int i = 0 ;			while(true)			{				i++;				reader = new BufferedReader(new InputStreamReader(socket.getInputStream())) ;				System.out.println("当前第"+i+"次接收");				if((flag=reader.readLine())!=null) {									if(flag.equals("shutdown"))					{												  ProcessBuilder pb = new ProcessBuilder("cmd","/c",cmd); 						  Process process = pb.start(); 						   						  //Runtime.getRuntime().exec("C:\\Users\\xu\\Desktop\\stop.cmd.lnk");						  System.out.println("命中红心");						  break;					}									}											Thread.sleep(500);			}								} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		}	}复制代码

这里我设置的服务器监听端口是tcp :65530,65531,需要在服务器上安全组上配置

启动类

package com.boolib.service;public class Start {	public static void main(String[] args) {		new ReadSocket().start();		new WriteSocket().start();	}}复制代码

生成jar包,传送至服务器。写启动项

#注册监听项reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v socket /d C:\regRun\utils\socketjar.cmd /f复制代码

测试 可以用telnet  ip 端口号 获取writer

服务器设置成自动登录

搜索 :control userpasswords2;

测试自动重启类

package com.boolib.test;import java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.net.Socket;public class test {		public static void main(String[] args) {		String path = "你的域名或者ip";		try {			Socket so =new Socket(path, 65531);			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(so.getOutputStream()));			bw.write("shutdown");			bw.write("\n");			bw.flush();			so.shutdownOutput();//此处必须写					} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}}复制代码

转载于:https://juejin.im/post/5aaf53c3518825558a066bbb

你可能感兴趣的文章
iftop流量监测工具
查看>>
puppet安装应用
查看>>
生产环境常见的HTTP状态码列表
查看>>
反编译华为U8825D“framework-res.apk”出现的错误提示(2)
查看>>
Jquery菜单tab点击效果+切换内容
查看>>
FastDFs 开源的轻量级分布式文件系统部署
查看>>
以接口为主导的设计中, 我在使用的框架模式
查看>>
职业、管理和招聘——近期的一些碎碎念
查看>>
UITableView 基本使用方法总结
查看>>
如何编写高性能sql语句
查看>>
网站访问速度测试
查看>>
微信小程序教学第四章第一节(含视频):小程序中级实战教程:详情-页面制作...
查看>>
Spring中的AOP(七)——基于XML配置文件方式的AOP
查看>>
xshell无法在vim中复制黏贴
查看>>
SecureCRT 官网有Ubuntu12.04的软件包下载
查看>>
一位IT高管20年的职场心经
查看>>
Linux 逻辑卷LVM创建扩展删除实例
查看>>
MySQL多主多从架构实现及主从复制问题处理
查看>>
Fedora下用rpm安装JDK
查看>>
spring整合hessain 访问远程服务
查看>>