如果Linux服务器持续高负载,可按如下顺序来排查问题。
- 使用
top
或htop
查看高负载进程 - 使用
ps aux
查看可疑进程 - 如果都没有,使用
systemctl status
查看可疑服务 - 查看
/etc/ld.so.preload
,看是不是预加载了一些东西,这里面的库是被隐藏起来的
找到后,先停服务、进程,再定位到服务和文件,将其删除。
大概率会遇到删除时没有权限的问题,这时就需要用lsattr
命令查看隐藏权限,常见的属性是 i
和e
,删除这些属性使用chattr -ie
,再执行删除就没问题了。
这次是因为偶然开启了Docker的远程访问服务后,服务器被挂马了挖矿程序,一直高负载却找不到进程,最后层层排查再结合网友的分享才发现几个名为 zzhh、zzhr、zzhd的服务。