宝塔面板CPU 100%大概率是site_task.py定时任务异常反复拉起崩溃所致,并非木马;应优先用htop定位瞬时高CPU的Python进程,检查系统crontab及宝塔system.db中相关任务状态,确认冗余后停用即可。

宝塔面板CPU 100%时,别急着杀进程或重装系统——大概率是 site_task.py 在反复拉起又崩溃,不是木马,是面板自己的定时任务卡住了。
用 htop 替代 top 查看瞬时高 CPU 的 Python 进程
top 默认刷新间隔 3 秒,而异常的 site_task.py 进程可能只存活 1–2 秒,根本来不及被捕捉。htop 更适合:它支持鼠标滚动、颜色高亮、树状视图,还能按命令行完整显示进程启动参数。
安装与运行:
- 执行
yum install -y htop(CentOS)或apt install -y htop(Ubuntu/Debian) - 运行
htop,按F4输入python过滤,再手动找含/www/server/panel/script/site_task.py的行 - 重点关注「TIME+」列:如果某个 python 进程的运行时间只有几秒,但 CPU 占用长期 >90%,基本就是它
查 crontab 和宝塔内置任务双源头
宝塔的「计划任务」界面显示的列表,和实际调度器不完全一致。有些任务由面板服务(bt 进程)直接注册进 SQLite 数据库,Web 界面改不了。
必须同时检查两处:
- 系统级 cron:
crontab -l | grep site_task.py,看是否有类似*/5 * * * * python /www/server/panel/script/site_task.py的行 - 宝塔服务级任务:
sqlite3 /www/server/panel/data/system.db "select id,name,command,status from crontab where command like '%site_task%'",确认status是否为 1 - 若查到且 status=1,临时停用用:
sqlite3 /www/server/panel/data/system.db "update crontab set status=0 where command like '%site_task%'"
确认是否真需要 site_task.py 这个脚本
这个脚本只干两件事:检查网站目录是否存在、SSL 证书是否快过期。如果你没开宝塔自动续签,所有证书都由 Nginx 手动配置,或站点根目录稳定无误,它就是冗余负载。
判断依据很直接:
- 执行
ls /www/server/panel/vhost/cert/,如果目录为空或全是已过期证书,说明你根本没依赖它管理证书 - 进宝塔「网站」列表,逐个点开 SSL 页签——如果状态栏显示“未启用”或“证书已过期”,那
site_task.py每次检查都会报错退出,触发重启循环 - 停掉它之后观察 10 分钟:如果 CPU 回落且网站访问正常,就不用修,直接关更安全
真正难处理的不是怎么停,而是停了之后没人补位——比如你靠它提醒证书快到期,那得换成 certbot + systemd timer 或监控告警;否则,关掉反而更稳。


















