已卸载Firefox后后台仍有其进程持续生成且占用CPU的排查咨询
嘿,看你遇到的这个问题挺闹心的——明明卸载了Firefox还删了家目录下的.mozilla文件夹,结果后台还是不断冒出Firefox进程,还占了不少CPU。先看看你贴的进程信息:
~$ ps -aux | grep firefox shubham 2883387 13.2 3.5 2662844 271024 ? Ssl 23:36 0:04 /usr/bin/firefox --no-remote --headless about:blank --remote-debugging-port=0 --profile /tmp/puppeteer_dev_firefox_profile-dFaLal shubham 2883441 3.9 1.7 2415508 134416 ? Sl 23:36 0:01 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 232908 -jsInit 278944 -parentBuildID 20211102211617 -appdir /usr/lib/firefox/browser 18 tab shubham 2883461 1.9 1.2 2382880 96640 ? Rl 23:36 0:00 /usr/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 85 -prefMapSize 232908 -jsInit 278944 -parentBuildID 20211102211617 -appdir /usr/lib/firefox/browser 18 tab
从进程参数里的--headless(无头模式,也就是不显示界面的浏览器)和puppeteer_dev_firefox_profile(Puppeteer是Node.js的自动化测试/爬虫库)能看出来,肯定是某个自动化脚本或服务在后台调用Firefox,哪怕你卸载了主程序,可能之前的自动化工具还保留了Firefox的二进制文件,或者卸载不彻底导致它还能调用。
给你几个实用的排查步骤:
先找进程的“源头父进程”:拿你看到的主Firefox进程PID(比如上面的2883387),运行
pstree -s 2883387,这个命令会展示进程的父子树结构,顺着往上找,就能看到到底是哪个程序启动了这个Firefox进程——大概率是个Node.js进程(因为Puppeteer基于Node.js),或者是某个定时任务触发的脚本。检查定时任务:运行
crontab -l查看你当前用户的定时任务列表,看看有没有定期执行的脚本;再去检查系统级的定时任务目录/etc/cron.d/、/etc/cron.hourly/等,里面有没有可疑的脚本。排查后台服务:用
systemctl list-units --type=service列出所有正在运行的系统服务,找一下有没有和Node.js、自动化、爬虫相关的服务;也可以用journalctl -xe | grep firefox搜一下系统日志,看看有没有启动Firefox的相关记录,能帮你定位触发源。清理Puppeteer相关依赖:如果确定是Puppeteer搞的鬼,先杀掉所有相关进程:
pkill -f puppeteer和pkill -f firefox,然后检查有没有全局安装的Puppeteer,运行npm uninstall -g puppeteer;如果是某个项目里的依赖,找到对应的项目目录,执行npm uninstall puppeteer彻底移除。彻底清理Firefox残留:有时候卸载可能不彻底,运行
sudo apt purge firefox(如果是Debian/Ubuntu系)或者对应的包管理命令,确保所有Firefox相关的二进制文件都被删掉,这样就算有脚本调用也找不到可执行文件了。
要是杀了进程后还自动重启,那大概率是有守护进程在监控并重启它,这时候结合上面的父进程排查,找到那个守护进程就能彻底解决了。
备注:内容来源于stack exchange,提问作者Shubhzgang




