CPU 忽高忽低:定时任务还是攻击
发布时间:2026-09-20 12:48       
更新时间:2026-09-21 12:14
监控曲线上 CPU 每隔十分钟鼓起一个包,低谷不到一成、高峰冲上九成,判断方向只有两个:自家定时任务,或外来进程作祟。按时间对齐加进程溯源,就能分辨。
## 先把高峰和时刻对齐
翻出监控明细或 sar 历史数据(sysstat 工具,sar -u 可查历史负载),记录每个高峰的准确时间。sar 没开启的机器,从监控平台导历史曲线对照,效果相同。规律性是第一判据:整点、每五分钟、每周一早上出现的高峰,先去比对计划任务:
crontab -l
ls -l /etc/cron.d/ && cat /etc/cron.d/*
系统级和各用户的 crontab 都要看一遍。整点前后的高峰还要排除系统级任务:/etc/cron.hourly、logrotate 的调度都在这个窗口,别看到规律就归罪业务。时间对得上基本可以结案。
## 高峰时段抓现行
时间不规则的高峰,就得蹲守。开着按秒刷新的监控,等 CPU 爬升的瞬间看进程排行:
top -c
pidstat -u 1 5
top 里按 P 键以 CPU 排序。抓到进程后看三样东西:命令路径(/usr/bin 正常,/tmp、/dev/shm 这类目录可疑)、启动时间、父进程。业务进程(php-fpm、java)升高,去查当时在处理什么请求,慢查询和大批量导出都会造成脉冲式负载;路径陌生、名字随机、藏在临时目录的,按入侵处理。Docker 宿主机上要区分宿主进程与容器内进程,docker stats 看每个容器的占用,别把容器的账算到宿主头上。
## 确认可疑后的动作顺序
疑似挖矿或后门进程,顺序别搞反:先断外联(安全组收紧出站规则),再冻结进程(kill -STOP 挂起而非直接杀,防止守护脚本重新拉起),然后取证(保留 /proc/PID 下的 cmdline、exe 信息和计划任务文件),收尾再清理持久化入口——crontab、/etc/cron.d、开机自启项逐个过一遍。只杀进程不清入口,过几分钟又会满血复活。排查期间也别急着删文件,可疑样本留一份给安全分析,杀进程与删证据是两件事。
规则脉冲查任务,无规律脉冲抓进程,两条线都排除再考虑业务量本身的增长。日常把 sar 打开,历史数据在手,回溯这类问题就不靠猜。