公司測試服務器被人抓去挖礦了,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 搞定了