麒麟系统中长期挂起的空闲进程(ppid=1、状态s/t、cpu为0但内存不释放)会导致内存缩水、卡顿及启动异常;需用ps筛选time极大且符合ppid=1和stat为s/t的进程,再用sudo kill -9终止。

麒麟系统中长期挂起的空闲进程(如PPID=1、状态为S或T、CPU占用为0但驻留内存不释放)会导致可用内存持续缩水、文件管理器卡顿、右键菜单延迟,甚至干扰新程序启动。
识别并终止挂起的空闲进程
打开终端(Ctrl + Alt + T),执行以下命令筛选出真正“活着却不动”的进程:
ps -eo pid,ppid,stat,comm,%cpu,%mem,time --sort=-time | head -20 | grep -E '^[[:space:]]*[0-9]+[[:space:]]+[0-9]+[[:space:]]+[ST][[:space:]]+'
重点关注PPID=1、STAT列含S(休眠)或T(暂停)、%CPU为0.0且TIME值极大(如超过100000秒)的条目——这类进程已脱离用户交互,仅靠内核维持状态,无法自行唤醒。
记下PID,执行sudo kill -9 PID强制终结;若存在多个,可批量处理:
sudo kill -9 $(ps -eo pid,ppid,stat --sort=-time | awk '$2==1 && $3~/^[ST]$/ && $4
清除systemd托管的休眠服务实例
某些软件(如旧版向日葵、国产录屏工具)退出后会遗留systemd --user服务实例,状态显示为inactive(dead)但实际仍占内存页框。这类服务不会出现在ps列表里,却持续锁定RAM。
方法一:查看所有用户级服务中处于非活跃但未完全卸载的状态
systemctl --user list-units --all --state=inactive,loaded | grep -E "(sunlogin|screen|remote|assist)"
方法二:对匹配的服务执行深度清理
sudo systemctl --user stop 服务名.service && sudo systemctl --user disable 服务名.service && sudo systemctl --user reset-failed 服务名.service
【必须执行reset-failed】:否则下次登录时systemd会自动恢复该服务的失败记录,并尝试重拉进程。
刷新dbus会话总线并清空IPC残留
GUI程序异常退出后,其D-Bus服务名称可能滞留在会话总线上,同时共享内存段(/dev/shm)、信号量(sem.*)和消息队列(/proc/sys/kernel/msgmax)仍被标记为“已分配”,造成内存不可见泄漏。
第一步:重启dbus用户会话总线
systemctl --user restart dbus
第二步:清空/dev/shm中归属已退出用户的临时对象
sudo find /dev/shm -uid $(id -u) -type f -delete 2>/dev/null
第三步:重置IPC资源限额(立即生效,无需重启)
echo 65536 | sudo tee /proc/sys/kernel/msgmax && echo 1024 | sudo tee /proc/sys/kernel/sem











