Title: 和挖矿程序拼到底!
技术博客已迁移至个人页,欢迎查看 yloopdaed.icu
您也可以关注 JPP - 这是一个Java养成计划,需要您的加入。
前言
服务器被挖矿了,CPU占用一直是100%。
没有过多深入研究,照着网上几个处理方式执行了一些命令。无果
同事给出的建议就是重装系统,但是我偏不
我要和他拼到底!
由于是在太影响使用了,先写个Shell脚本,每2小时清理一次。以后有时间再收拾你!
Shell思路
由于太久没写过Shell了,所以很简陋,以后再优化。
大概思路如下:
1 获取 [用户] 的进程号
2 遍历进程号,获取其对应的CPU信息
3 判断CPU使用量是否大于85,如果大于,则杀死该进程
#!/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`
}
#定时清理git用户开辟的进程
#用户名
USERNAME="root"
THRESHOLD="85"
TIME=$(date "+%Y-%m-%d %H:%M:%S")
#获取git用户的所有进程号
PIDS=`ps -ef | grep $USERNAME | grep -v grep | awk '{print $2}'`
#循环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%,杀死进程
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 进程 killed" >> touch mining.log
fi
fi
done
done
网友评论