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 搞定了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章