公司测试服务器被人抓去挖矿了,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 搞定了