md5sum命令的灵活运用

零度    2017/01/05    总阅读量

高并发、锁   思考   面试   实践   Netty   Linux   Redis   MySQL   Nginx   Maven   Git   ElasticSearch  

跟Linux有过接触的人, 基本都熟悉常用的linux命令, 但md5sum这命令并不是所有的人都用过。 其实, md5sum就是对文件/字符串求md5值的命令, 很简单。

在我们的java部署tomcat环境中,有时候并不能知道服务是否好坏,比如内存溢出了, 或者服务卡了很久没反应了,那么我们可以通过md5sum 来执行tomcat的日志文件,写一个定时器, 定时几分钟执行一下,比较该次值和上一次值是否相等,如果相等表示tomcat已经很久没有日志输出了, 那么这个时候我们可以通过java调用脚本进行重启tomcat,并且发送预警短信进行通知。

脚本如下:

#!/bin/sh
#kill tomcat pid
pidlist=`ps-ef|greptomcat|grep-v"grep"|awk'{print $2}'`
if[ "$pidlist"= ""]
   then
       echo"no tomcat pid alive!"
else
  echo"tomcat Id list :$pidlist"
  kill-9 $pidlist
  echo"KILL $pidlist:"
  echo"service stop success"
fi
echo"start tomcat"
cd/usr/local/tomcat/bin
./startup.sh ;tail-f ../logs/catalina.out

java调用shell如下:

private static void cmdExec(String cmd) {
		System.out.println(cmd);
		Runtime runtime = Runtime.getRuntime();
		Process process = null;
		String line = null;
		InputStream is = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		try {
			process = runtime.exec(cmd);

			is = process.getInputStream();
			isr = new InputStreamReader(is, "UTF-8");
			br = new BufferedReader(isr);

			while ((line = br.readLine()) != null) {
				System.out.println(line);
			}
			int exitCode = process.waitFor();
			System.out.println("exitCode =" + exitCode);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (isr != null) {
				try {
					isr.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (process != null) {
				process.destroy();
			}
		}
	}

希望对大家有所帮助,这个是我在实际运用中的心得。


扫描关注:匠心零度

(转载本站文章请注明作者和出处 匠心零度-jiangxinlingdu

Show Disqus Comments

腾讯云:新客户代金券
腾讯云:3年时长最低265元/年
阿里云:ECS云服务器2折起

目录