Ubuntu进程占用过高的解决方法
使用top命令实时查看系统资源占用情况(按1可查看每个CPU核心的使用率,按M按内存排序,按P按CPU排序);或使用htop(更直观的界面,需安装:sudo apt install htop);也可通过ps命令快速筛选高CPU/内存进程,例如:
ps -eo %cpu,%mem,pid,cmd --sort=-%cpu | head(显示CPU使用率前10的进程)
ps -eo %cpu,%mem,pid,cmd --sort=-%mem | head(显示内存使用率前10的进程)
通过这些命令可快速定位占用资源的进程ID(PID)及名称。
若确认某进程为异常(如非系统关键进程、无响应或占用极高),可使用kill命令终止:
kill <PID>(发送SIGTERM信号,允许进程正常退出);kill -9 <PID>(发送SIGKILL信号,立即终止进程,慎用,可能导致数据丢失)。ps -aux | grep <进程名>查询),避免误杀系统关键进程。nice(启动时设置)或renice(运行时调整)降低进程优先级,减少对CPU的占用。例如:nice -n 10 <进程名>(启动时设置优先级为10,数值越大优先级越低);renice 10 -p <PID>(调整已运行进程的优先级)。cpulimit工具(安装:sudo apt install cpulimit),例如限制某进程CPU使用率为50%:sudo cpulimit -p <PID> -l 50;cgroups(控制组)创建内存限制组,例如限制某进程组内存为1G:sudo cgcreate -g memory:/mygroup;echo "1G" | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes;sudo cgclassify -g memory:mygroup <PID>(将进程加入限制组)。系统缓存(如APT包缓存、浏览器缓存)和临时文件会占用大量内存,清理后可释放资源:
sudo apt clean(删除已下载的包文件)、sudo apt autoclean(删除旧版本的包文件)、sudo apt autoremove(删除不再需要的依赖包);sudo rm -rf /tmp/*(删除/tmp目录下的临时文件);sudo journalctl --vacuum-time=3d(删除3天前的日志);sudo snap list --all(查看所有Snap包版本),sudo snap remove <snap_name> --revision <revision_number>(删除指定版本),sudo snap set system refresh.retain=2(仅保留2个版本)。sudo fallocate -l 4G /swapfile;sudo chmod 600 /swapfile;sudo mkswap /swapfile;sudo swapon /swapfile(启用交换文件);/etc/fstab:echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab。sudo systemctl stop systemd-oomd;sudo systemctl disable systemd-oomd。sudo apt update && sudo apt upgrade。若上述方法无法解决,需检查是否感染恶意软件(如挖矿病毒),可通过以下方式排查:
netstat或ss命令查看异常网络连接(如连接到陌生IP的高端口);chkrootkit或rkhunter工具扫描系统(安装:sudo apt install chkrootkit rkhunter,扫描:sudo chkrootkit、sudo rkhunter --check);