linux 定时执行shell脚本,kill -9 CPU过高进程,java语言实现

公司测试服务器被人抓去挖矿了,CPU直接飙升到600%,700%。这个挖矿病毒特别难搞,找了公司的linux大神来处理,他说要重装系统。但是测试服务器上禅道,jenkins,jdk,mysql,maven,git。。。一大堆乱七八糟的东西,实在不想重装。就想着先简单处理一下,写个shell脚本,每过20分钟(通过观察,kill -9 病毒进程之后 20分钟后它又出现了) kill -9 cpu超过600%的线程。

 脚本在网上找了个

top -b1 -n1 | sed '1,5d' | awk '{if($9>=600.00)print}' | awk '{print $1}' | xargs kill -9 {}

然后通过crontab来定时20分钟执行一下。通过测试发现果然很好使,cpu又恢复正常了,一切看起来那么美好。但是过了一个小时发现cpu又到了600。经过排查发现service crond status 显示crontab宕掉了,截图如下:

看到这密密麻麻的文字就头疼,手动重启crond服务之后,再次定时执行脚本,crond又宕掉了。 算了,感觉解决这个好麻烦。就想着写段java代码定时执行多舒服。

操作如下:

1.vi ProgressOperate.java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ProgressOperate {
	public static void main(String[] args) throws Exception {
		while(true) {
			System.out.println("开始执行checkcpu.sh" + "当前时间:" + System.currentTimeMillis());
			try {
				String line;
				Process p = Runtime.getRuntime().exec("checkcpu.sh");
				BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
				while ((line = in.readLine()) != null) {
					System.out.println(line);
				}
				in.close();
				Thread.sleep(2 * 60 * 1000);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
}

2.javac ProgressOperate.java   (// 用开发工具用多了,都忘记javac命令了,现场百度的。。)

3.nohup java ProgressOperate & (nohup可以让我们写的这个main方法在后台运行)。

4.没有4 搞定了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值