java 代码判断Mysql服务是否开启
2015-12-23 16:44
579 查看
先啰嗦一下,为什么要监听mysql服务是否开启。也不知道为什么,我们服务器上的mysql服务总是自动的就关闭了,我们要调用接口不停低向数据库中插入数据,如果mysql服务停止了,而调用接口的程序还在一直运行,那么获取的实时数据就不能插入数据库了,所以要来监听一下mysql服务是否停止了。如果mysql服务停止了,就做出相应的操作,即让程序停止,不在向数据库中插入数据直到mysql服务启动。
废话不多说上代码
其中加注释的是本人还不熟悉ProcessBuilder这个类时传参情况,它是java.lang包下的一个类,JDK1.5以后才有。实验证明最后两种远程的和本地的那种格式是正确。
下面说一下mysql中查看服务是否启动的有关命令和参数的意思,先上效果图
在dos窗口运行命令,结果如图
我的mysql在安装的时候没有设置密码所以在这里没有写,如果mysql有密码也可以这样
mysql服务停止后
dos命令执行情况
以上是测试本地的,下面是测试远程的,由于公司的服务不能随便的停止,所以就只演示mysql开启时的效果
mysqladmin -u user -h 192.168.1.86 -p mima -P 3306 ping
mysqladmin 是mysql查看服务器的命令
-u 是连接数据库的用户名
-h 是远程服务器的ip地址
-p 是登陆mysql的密码(注意p是小写的)
-P 是mysql的端口号(这里的p是大写的)
ping 本人理解就是ping mysql服务是否开启
这些是在dos窗口中输入的命令时候写的。在java代码中如何写,就是我上面的代码缩写的样子了。不过有几点还是要注意一下:
1.在new ProcessBuilder实例的时候,参数传的得这样
有关java.lang包下的这个ProcessBuilder类,本人还在琢磨当中,目前实现功能重要,嘿嘿。
如果我说的有什么不对,或者错误,还望大神们多多指教,共同学习讨论。
废话不多说上代码
package cn.com.dekn.client.webservice.tblsavevehicleweight.util; import java.io.IOException; import java.io.InputStream; public class JudgeMysqlIsOpen { public static String getInfoMySqlIsOpen(){ Process p = null; try{ // p = new ProcessBuilder("mysqladmin","-u yonghu -h 192.168.1.86 -p123456 -P 8806 ping").start(); // p = new ProcessBuilder("mysqladmin -u -h -p -P","yonghu","192.168.1.86","123456", "8806","ping").start(); //访问运程服务器上的mysql // p = new ProcessBuilder("mysqladmin","-uyonghu","-h192.168.1.86","-p123456", "-P8806", "ping").start(); //访问本地的mysql p = new ProcessBuilder("mysqladmin","-uroot","-proot","ping").start(); }catch(IOException e){ return "获取mysql是否停止异常"; } byte[] b = new byte[1024]; int readbytes = -1; StringBuffer sb = new StringBuffer(); //读取进程输出值 //在JAVA IO中,输入输出是针对JVM而言,读写是针对外部数据源而言 InputStream in = p.getInputStream(); try{ while((readbytes = in.read(b)) != -1){ sb.append(new String(b,0,readbytes)); } }catch(IOException e1){ return "读取流异常"; }finally { try{ in.close(); }catch (IOException e2){ return "关闭流异常"; } } return sb.toString(); } }
其中加注释的是本人还不熟悉ProcessBuilder这个类时传参情况,它是java.lang包下的一个类,JDK1.5以后才有。实验证明最后两种远程的和本地的那种格式是正确。
下面说一下mysql中查看服务是否启动的有关命令和参数的意思,先上效果图
在dos窗口运行命令,结果如图
我的mysql在安装的时候没有设置密码所以在这里没有写,如果mysql有密码也可以这样
mysql服务停止后
dos命令执行情况
以上是测试本地的,下面是测试远程的,由于公司的服务不能随便的停止,所以就只演示mysql开启时的效果
mysqladmin -u user -h 192.168.1.86 -p mima -P 3306 ping
mysqladmin 是mysql查看服务器的命令
-u 是连接数据库的用户名
-h 是远程服务器的ip地址
-p 是登陆mysql的密码(注意p是小写的)
-P 是mysql的端口号(这里的p是大写的)
ping 本人理解就是ping mysql服务是否开启
这些是在dos窗口中输入的命令时候写的。在java代码中如何写,就是我上面的代码缩写的样子了。不过有几点还是要注意一下:
1.在new ProcessBuilder实例的时候,参数传的得这样
new ProcessBuilder("mysqladmin","-uyonghu","-h192.168.1.86","-pmima", "-P3306", "ping").start()其中-h和ip地址之间不要有空格,还有“”双引号前后都不要有空格,其他的都一样,还有-p密码一定要放在-hip地址之后,不然也会报错。最后一点:如果是监控远程服务器上的mysql服务的状态你首先保证能ping通,其次是那个账号和密码具有远程登录的权限就是你可以用mysql -uroot -p远程登录。
有关java.lang包下的这个ProcessBuilder类,本人还在琢磨当中,目前实现功能重要,嘿嘿。
如果我说的有什么不对,或者错误,还望大神们多多指教,共同学习讨论。
相关文章推荐
- MySQL中的integer 数据类型
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- MySQL存储过程
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- PropertyChangeListener简单理解
- MySQL创建用户及权限控制