必须从进程树、服务注册、启动项、内核模块四层同步清除,否则流氓软件会复活;先用ps和kill终止活跃进程,再禁用systemd服务、清理XDG自启和shell脚本、卸载可疑内核模块,最后验证无残留。

你在麒麟OS里卸载了一个流氓软件,但发现它还在后台偷偷运行、CPU占用异常、进程名伪装成系统服务,甚至重启后又自动拉起——这不是卸载失败,是残留进程未被真正终结。必须从进程树、服务注册、启动项、内核模块四层同步清除,否则它随时可能复活。
确认并终止活跃的流氓进程
先揪出正在跑的进程本体,别只看名字:有些流氓进程会起名“ksysguard”“dbus-daemon”等混淆视听。
按Ctrl + Alt + T打开终端,执行:ps aux | grep -E "(关键词|可疑名)"(把“关键词”换成你记得的软件名或拼音首字母,比如“sunlogin”“todesk”)。
若输出中出现非 root 用户启动、PPID=1 或 CMD 列含/tmp/、/dev/shm/、sh -c等路径,基本可判定为恶意残留进程。
记下PID(第二列数字),执行:sudo kill -9 PID强制终止;若存在多个同名进程,用sudo pkill -f "关键词"一次性杀净。
【注意:不要直接 kill -9 systemd 或 dbus 进程,否则桌面会崩溃】
禁用并删除自启服务单元
流氓软件常把自己注册为 systemd 服务,实现开机自启和进程守护。不清理服务定义,杀完进程几分钟后它就复活。
第一步:查服务名。执行:systemctl list-unit-files --type=service | grep -i "关键词",重点看状态为enabled或static的条目。
第二步:停止并禁用该服务:sudo systemctl stop 服务名.service && sudo systemctl disable 服务名.service。
第三步:彻底删除服务文件。先查位置:systemctl show --property=FragmentPath 服务名.service,再执行:sudo rm -f $(systemctl show --property=FragmentPath 服务名.service | cut -d= -f2)。
第四步:清空服务缓存:sudo systemctl daemon-reload && sudo systemctl reset-failed。
扫描并清除顽固的用户级启动项
有些流氓软件绕过 systemd,在用户登录时通过桌面环境自启机制拉起,比如 XDG autostart、bashrc 注入、或 GNOME 启动应用列表。
方法一:检查 XDG 自启目录
执行:ls -la ~/.config/autostart/ /etc/xdg/autostart/ 2>/dev/null | grep -i "关键词"。
若发现匹配的 .desktop 文件,立即删除:rm -f ~/.config/autostart/*关键词*.desktop /etc/xdg/autostart/*关键词*.desktop。
方法二:排查 shell 初始化脚本
检查:cat ~/.bashrc ~/.profile ~/.bash_profile 2>/dev/null | grep -i "关键词"。
若发现可疑的nohup、&、sh -c或绝对路径启动命令,用sed -i '/关键词/d' ~/.bashrc逐个删掉对应行。
方法三:检查 GNOME 启动应用
打开“设置”→“开机启动”,在图形界面中手动关闭所有名称含关键词的条目;若不可见,执行:gsettings get org.gnome.session.manager startup-apps验证,再用gsettings set org.gnome.session.manager startup-apps []重置(慎用,仅当确认全为恶意项时)。
排查并卸载可疑内核模块
极少数流氓软件会加载内核模块(.ko),实现更底层的驻留和隐藏,普通进程工具无法检测。
执行:lsmod | grep -i "关键词",观察是否有匹配模块名。
若有输出,先尝试安全卸载:sudo modprobe -r 模块名。
再检查模块文件位置:modinfo 模块名 | grep ^filename,确认路径是否在/lib/modules/$(uname -r)/之外(如/tmp/、/var/tmp/、/dev/shm/)。
【若 filename 路径异常,立即执行 sudo rm -f 对应路径,并运行 sudo depmod -a 更新模块依赖】

















