You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS系统中postgres异常进程占满CPU且自动重启求助

兄弟,这种情况我碰到过好几次,十有八九是postgres用户被恶意程序(大概率是挖矿脚本)缠上了——毕竟正常PostgreSQL没启动,还自动重启、占满CPU,进程名还奇怪,完全符合恶意程序的特征。给你一套一步步排查解决的方案,亲测有效:

排查与解决步骤

1. 先揪出进程的“真面目”

别被奇怪的进程名骗了,先拿到它的真实信息:

  • 先找到进程PID:执行 ps -ef | grep postgres,排除掉grep本身的进程,剩下的就是那个占CPU的进程(比如PID是1234)
  • 查看进程的实际执行文件路径:ls -l /proc/1234/exe,恶意程序常改进程名,这个软链接能直接指向它的真身
  • 查看进程的启动命令行:cat /proc/1234/cmdline,有时候能看到它的下载地址、脚本参数这类关键信息

2. 找到自动重启的根源

杀了就重启,肯定有守护机制在后台盯着,逐个排查:

  • 检查systemd服务:执行 systemctl list-unit-files | grep -i postgres,找那些不是postgresql.service的陌生服务。如果找到,直接停止并禁用:systemctl stop 恶意服务名 && systemctl disable 恶意服务名
  • 检查定时任务:
    • 看postgres用户的个人定时任务:crontab -u postgres -l
    • 检查系统级定时任务:cat /etc/crontab,还有/etc/cron.d/、/var/spool/cron/目录下的文件,发现陌生的定时执行命令直接删掉
  • 检查启动脚本:看看/etc/rc.local、postgres用户家目录(默认/var/lib/pgsql)下的.bashrc、.profile这类自动执行的脚本,有没有陌生的启动语句,有的话删掉

3. 彻底清除恶意程序

  • 先临时冻结进程,防止边杀边重启:kill -STOP 1234
  • 根据第一步找到的执行文件路径,删除恶意程序:比如rm -f /tmp/xxx_miner(注意核对路径,别删错系统文件)
  • 再彻底杀死进程:kill -9 1234
  • 清理postgres用户家目录的可疑文件:ls -la /var/lib/pgsql,检查隐藏文件,发现陌生脚本、二进制文件直接删除

4. 加固postgres用户权限,防止再次中招

  • 检查sudo权限:执行visudo,看看有没有给postgres不必要的sudo权限,恶意程序常利用这个提权,没用的权限直接删掉
  • 禁止postgres用户交互式登录(如果不需要的话):usermod -s /sbin/nologin postgres,切断恶意程序的交互式shell入口
  • 检查系统新增用户:执行cat /etc/passwd,看看有没有陌生的新用户,有的话直接删除:userdel 陌生用户名

5. 事后溯源与加固

  • 查看系统日志找入侵痕迹:tail -n 100 /var/log/messages、tail -n 100 /var/log/secure,看看是不是SSH暴力破解、漏洞利用进来的
  • 安装fail2ban防止SSH暴力破解,定期更新系统补丁:yum update -y,堵住可能的漏洞

内容的提问来源于stack exchange,提问作者Nicolás Pascual

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:37:16