Chrome/Chromium非root用户启动失败报[FATAL:partition_address_space]错误求解决方案
遇到非root用户启动Chrome/Chromium报这个致命错误的情况,确实挺闹心的,结合我之前排查类似问题的经验,给你几个针对性的解决方案,你可以逐一试试:
检查并调整用户的内存资源限制
非root用户的虚拟内存、栈大小等资源限制可能比root低,导致Chrome无法分配足够的地址空间。先分别用root和非root用户执行ulimit -a,对比输出里的virtual memory(虚拟内存)和stack size(栈大小)项。如果非root用户的虚拟内存限制较低,可以修改系统的限制配置:
编辑/etc/security/limits.conf文件,添加以下内容(把your-username换成你的非root用户名):your-username soft as unlimited your-username hard as unlimited保存后重新登录非root用户,再尝试启动Chrome。
修复Chrome安装目录及缓存目录的权限
如果你之前用root运行过Chrome,可能导致Chrome的安装目录或者缓存目录的所有者变成了root,非root用户没有读写权限。执行以下命令修复权限:# 修复Chrome安装目录的所有者和权限 sudo chown -R your-username:your-username /home/my-user-folder/chrome-linux/ sudo chmod -R u+rwx /home/my-user-folder/chrome-linux/ # 修复Chrome缓存目录的所有者(Chromium请换成~/.config/chromium/) sudo chown -R your-username:your-username ~/.config/google-chrome/改完权限后再用非root用户运行测试命令。
添加针对性的启动参数
试试在原有命令里加上--disable-dev-shm-usage参数,这个参数可以避免Chrome使用/dev/shm共享内存,很多时候非root用户在/dev/shm的空间受限,会触发这类地址空间错误。修改后的命令如下:/home/my-user-folder/chrome-linux/chrome --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --print-to-pdf=/home/my-user-folder/output.pdf https://www.google.com 2>&1 | tee chrome-error.log另外也可以尝试添加
--single-process参数(注意:这个参数会关闭Chrome的多进程模式,安全性有所降低,仅用于测试是否能解决问题)。排查系统安全模块限制
如果你的服务器开启了SELinux或者AppArmor,这些安全模块可能限制了非root用户运行Chrome的某些操作。可以临时关闭SELinux测试:sudo setenforce 0然后用非root用户重新运行命令,如果能成功启动,说明是SELinux的限制,需要添加对应的规则允许Chrome运行;如果是AppArmor,可以检查相关配置文件,调整对Chrome的权限限制。
备注:内容来源于stack exchange,提问作者user1274113

