排查某进程占用CPU较高
一、常用指令
top 发现
sudo pstree -asp pid
sudo netstat -anp | grep pid
sudo lsof -p pid 查看用了哪些文件
which zed
ls -lh /usr/sbin/zed 查得文件较大,有问题
sudo crontab -l 查看root的定时任务
systemctl status zed.service
sudo systemctl stop zed.service
sudo systemctl disable zed.service
二、排查记录
2.1 问题
实验室中有两台服务器,top指令发现有进程占用极高CPU,使用了20个核心,占用高达50%,使用kill指令停止进程后又会重新启动,两台服务器启动的进程不一样,一个是名为xmrig
(挖矿程序),一个名为-bash
,接下来分分别记录这两台服务器的两个进程来解决
2.2 排查xmrig
进程
2.2.1 查看进程信息
top指令查看占用
ps -aux |grep pid查看进程信息
pstree -asp pid 查看父子进程及命令
netstat -anp | grep pid查看网络连接,与新加坡的ip建立了连接
还可通过cd /proc/pid
进入到指定pid进程的文件夹中,其中fd文件夹记录了使用到的文件软链接
2.2.2 查看定时启动任务
- crontb -l 查看当前用户所有定时任务
- 可crontab -r 清除所有定时任务
2.2.3 查看自启动服务
- 执行
ll /etc/systemd/system/multi-user.target.wants/***.service
查看文件夹下所有自启动服务 - 执行
systemctl list-unit-files |grep enable
查看所有开启的自启动服务 - 网上查到是跟myservice.service有关,查看其内容
- 发现其执行的是
/usr/bin/sshd
,文件名称看似正常,实际上查看其内容,发现问题大了
2.2.4 解决
-
首先crontab -r 删除所有定时任务
-
执行
systemctl disable myservice.service
取消任务
删除找到的那些文件等 -
sudo grep -rnR /bin/sshd ./*
查找当前目录下是否有某文件中含有/bin/sshd
字符内容
2.3 排查-bash
进程
2.3.1查看期父子进程以及命令
ps 发现其执行命令为systemd
pstree,每个核心开了一个在跑
查看其网络连接
发现其与国外某IP建立了tcp连接
2.3.2 排查
- 查看定时任务
crontab -l
- 还可查看自启动服务,执行
ll /etc/systemd/system/multi-user.target.wants/***.service
2.3.2 解决
执行sudo crontab -e
编辑定时任务,并删除定时任务,或者直接执行sudo crontab -r
删除所有定时任务
不再出现,成果解决
2.4 排查zed
进程
top 发现
pid为 2717
sudo pstree -asp 2717
sudo netstat -anp | grep 2717
sudo lsof -p 2717 查看用了哪些
which zed
ls -lh /usr/sbin/zed 查得文件较大,有问题
sudo crontab -l 查得为空
systemctl status zed.service
sudo systemctl stop zed.service
sudo systemctl disable zed.service
2.5 安装杀毒软件排查
sudo apt-get update
sudo apt-get install clamav clamav-daemon
clamscan --version
暂时停止服务
sudo systemctl stop clamav-freshclam
更新病毒库
freshclam
重启服务
sudo systemctl start clamav-freshclam
对home查杀
clamscan -r -i /home -l /var/log/clamscan.log