Title: 和挖礦程序拼到底蔼卡!
技術(shù)博客已遷移至個(gè)人頁喊崖,歡迎查看 yloopdaed.icu
您也可以關(guān)注 JPP - 這是一個(gè)Java養(yǎng)成計(jì)劃,需要您的加入雇逞。
前言
服務(wù)器被挖礦了荤懂,CPU占用一直是100%。
沒有過多深入研究塘砸,照著網(wǎng)上幾個(gè)處理方式執(zhí)行了一些命令节仿。無果
同事給出的建議就是重裝系統(tǒng),但是我偏不
我要和他拼到底掉蔬!
由于是在太影響使用了廊宪,先寫個(gè)Shell腳本,每2小時(shí)清理一次女轿。以后有時(shí)間再收拾你挤忙!
Shell思路
由于太久沒寫過Shell了,所以很簡陋谈喳,以后再優(yōu)化册烈。
大概思路如下:
1 獲取 [用戶] 的進(jìn)程號
2 遍歷進(jìn)程號,獲取其對應(yīng)的CPU信息
3 判斷CPU使用量是否大于85婿禽,如果大于赏僧,則殺死該進(jìn)程
#!/bin/bash
#向上取整
function ceil(){
floor=`echo "scale=0;$1/1"|bc -l ` # 向下取整
add=`awk -v num1=$floor -v num2=$1 'BEGIN{print(num1<num2)?"1":"0"}'`
echo `expr $floor + $add`
}
#定時(shí)清理git用戶開辟的進(jìn)程
#用戶名
USERNAME="root"
THRESHOLD="85"
TIME=$(date "+%Y-%m-%d %H:%M:%S")
#獲取git用戶的所有進(jìn)程號
PIDS=`ps -ef | grep $USERNAME | grep -v grep | awk '{print $2}'`
#循環(huán)PID
for PID in $PIDS; do
#statements
CPU_DATA=`pgrep java | xargs ps -u --pid $PID | awk '{print $3}'`
for C in $CPU_DATA; do
#如果CPU占用大于80%,殺死進(jìn)程
if [[ $C != '%CPU' ]]; then
CEIL_C=`ceil $C`
if [[ CEIL_C -gt $THRESHOLD ]]; then
echo $TIME >> mining.log
echo "git 用戶的 $PID 已占用CPU $C" >> touch mining.log
kill -9 $PID
echo "已將 $PID 進(jìn)程 killed" >> touch mining.log
fi
fi
done
done