在无头模式下运行Chrome

12

要在无头模式下运行Chrome,我执行了以下命令:

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"

chrome --remote-debugging-port=9222 --disable-gpu --headless

但是,我遇到了以下错误:

[0305/140111.481537:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140111.484254:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140111.484254:INFO:crashpad_client_mac.cc(292)]在0.983秒后重新启动处理程序。[0305/140111.513641:ERROR:gpu_process_transport_factory.cc(1009)]丢失UI共享上下文。[0305/140111.513709:ERROR:instance.cc(49)]无法找到用于度量的服务清单。[0305/140111.513733:ERROR:service_manager.cc(890)]无法解析服务名称:度量。[0305/140111.514229:ERROR:socket_posix.cc(142)]bind()返回一个错误,errno=48:地址已经在使用中(48)。DevTools监听ws://[::1]:9222/devtools/browser/c46563ca-1891-48bd-bdd6-e6122f3f3b5d。[0305/140112.484141:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140112.484641:INFO:crashpad_client_mac.cc(292)]在0.985秒后重新启动处理程序。[0305/140113.489618:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140113.490274:INFO:crashpad_client_mac.cc(292)]在0.979秒后重新启动处理程序。[0305/140114.484881:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140114.485349:INFO:crashpad_client_mac.cc(292)]在0.985秒后重新启动处理程序。[0305/140115.489188:ERROR:xattr.cc(64)]在文件/var/folders/m3/92mmh21n0cx4ppf8c3bcns38hd4_kk/T/上设置org.chromium.crashpad.database.initialized时出现操作不允许的错误(1)。[0305/140115.489638:INFO:crashpad_client_mac.cc(292)]在0.985秒后重新启动处理程序。

我也尝试过,

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --disable-gpu --headless

但是我得到了相同的错误。

有没有解决这个问题的方法?

3个回答

34

我从Chrome crashpad crashes on xattr中得到了答案。

只需要在启动Chrome时为"崩溃转储"提供不同的目录,就像这样:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --disable-gpu --headless --crash-dumps-dir=/tmp

4
为了更清晰明了,可以使用这个额外的标志来解决问题:--crash-dumps-dir=/tmp - kaluginserg

4

添加以下命令标志:

--disk-cache-dir=/tmp --user-data-dir=/tmp --crash-dumps-dir=/tmp

eg.

chrome --headless --disable-gpu --screenshot --disk-cache-dir=/tmp --user-data-dir=/tmp --crash-dumps-dir=/tmp http://m.baidu.com

更多的命令行标志,请参见此处


1
或者完全禁用崩溃日志记录?使用 --disable-crash-reporter(通过您提供的链接找到) - jan.vogt
1
我更喜欢使用“--disable-crash-reporter”方式,因为在无头模式下我不需要崩溃报告。 - YuWea

-6

更新 3/6
我在自己的 MacBook 上检查了解决方案,它有效。


今天我遇到了同样的问题,在查阅了一些文档后,我怀疑这是由于MacOS中的SIP(系统完整性保护)功能引起的。通过该功能限制,即使您拥有根权限,也无法修改/var文件夹下的文件。

因此,这里是禁用该功能的方法:

  1. 关闭您的Mac(苹果 > 关机)。
  2. 按住Command-R键并按下电源按钮。继续按住Command-R键,直到出现苹果标志。
  3. 等待OS X启动到OS X实用程序窗口。
  4. 选择实用工具 > 终端。
  5. 输入csrutil disable。
  6. 输入reboot。

1
你真的不应该禁用系统完整性,这是一个重大的安全风险,并且将来会给你带来一些严重的问题。 - real_ate
非常糟糕的想法。 - Alexander Presber
1
注意!如果你正在使用工作电脑,请务必不要这样做。 - NANfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接