运行 "google-chrome" on WSL Ubuntu as --headless --no sandbox 给出多个错误 - 如何在 WSL 中使用无头截屏?
Running "google-chrome" on WSL Ubuntu as --headless --no sandbox gives multiple errors - how do I take screenshot using headless in WSL?
我是 运行ning Windows 10,我一直在 Ubuntu Linux 子系统下使用 Ubuntu Linux 发行版.
我希望能够使用 Chrome.exe 或 google-chrome 到 运行 无头并截取屏幕截图,生成 pdf 等...作为库的一部分调用,但看不到这样做(例如使用 jupyter_to_medium 库在后台启动 chrome 以截取屏幕截图)。
我尝试了多种方法来使用 google-chrome 独立于我正在使用的库或程序对其进行调试。
这是我试过的方法:
我可以通过Ubuntu终端启动Chrome(Windows可执行文件),将其重定向到Windows 可执行:
/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe
当我这样做时,一个新选项卡会在我的 Windows Chrome 浏览器中打开,所以这里没有问题。
当我尝试在 ubuntu 终端中无头使用 google-chrome
时,我得到 多个问题 例如
2a) 尝试获取屏幕截图 - FAILs 显示 Network service crashed, restarting service
无限循环 - 必须按 CTRL^C 才能停止
(base) etzimopoulos@DESKTOP-HI9P6E4:~$ google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/
[0626/055458.471044:ERROR:udev_watcher.cc(61)] Failed to enable receiving udev events.
[0626/055458.612113:ERROR:network_service_instance_impl.cc(262)] Network service crashed, restarting service.
[0626/055458.696014:ERROR:network_service_instance_impl.cc(262)] Network service crashed, restarting service.
...
2b) 尝试使用 不同的参数 --no-sandbox --disable-setuid-sandbox
获取屏幕截图,这次出现不同的错误。
$ sudo google-chrome --no-sandbox --disable-setuid-sandbox --headless --screenshot https://www.chromestatus.com/
[0626/061854.348849:ERROR:udev_watcher.cc(61)] Failed to enable receiving udev events.
[0626/061855.311675:ERROR:platform_shared_memory_region_posix.cc(46)] Descriptor access mode (0) differs from expected (2)
[0626/061855.312483:WARNING:crash_handler_host_linux.cc(366)] Could not translate tid - assuming crashing thread is thread group leader; syscall_supported=0
[0626/061855.474617:WARNING:crash_handler_host_linux.cc(366)] Could not translate tid - assuming crashing thread is thread group leader; syscall_supported=0
--2020-06-26 06:18:55-- https://clients2.google.com/cr/report
Resolving clients2.google.com (clients2.google.com)... 216.58.210.46, 2a00:1450:4009:800::200e
Connecting to clients2.google.com (clients2.google.com)|216.58.210.46|:443... connected.
HTTP request sent, awaiting response... [0626/061855.655013:ERROR:headless_shell.cc(399)] Abnormal renderer termination.
429 Too Many Requests
2020-06-26 06:18:55 ERROR 429: Too Many Requests.
Unexpected crash report id length
Failed to get crash dump id.
Report Id: ```
尝试 运行 具有相同参数的 Windows 可执行文件 Chrome.exe,似乎 运行但没有截图(我的目录中没有新文件)
尝试 运行 google-chrome
没有 在 WSL 中提升权限我得到一个不同的错误:
google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Failed to generate minidump.Illegal instruction (core dumped)
如有任何帮助或指导,我们将不胜感激。我的另一个选择是 运行 windows 10 上的虚拟机,带有本地 Linux UI 和终端,这可能会工作。
但是有没有办法在 WSL 中进行所有设置?
谢谢。
试试这个(在 wsl2 中测试)
在您的 wsl2 ubuntu 控制台中输入以下命令:
#install packages
sudo apt-get install -y curl unzip xvfb libxi6 libgconf-2-4 fonts-liberation
#get latest chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
#install it
sudo apt install ./google-chrome-stable_current_amd64.deb
#test a screenshot
google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/
我是 运行ning Windows 10,我一直在 Ubuntu Linux 子系统下使用 Ubuntu Linux 发行版.
我希望能够使用 Chrome.exe 或 google-chrome 到 运行 无头并截取屏幕截图,生成 pdf 等...作为库的一部分调用,但看不到这样做(例如使用 jupyter_to_medium 库在后台启动 chrome 以截取屏幕截图)。
我尝试了多种方法来使用 google-chrome 独立于我正在使用的库或程序对其进行调试。
这是我试过的方法:
我可以通过Ubuntu终端启动Chrome(Windows可执行文件),将其重定向到Windows 可执行:
/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe
当我这样做时,一个新选项卡会在我的 Windows Chrome 浏览器中打开,所以这里没有问题。
当我尝试在 ubuntu 终端中无头使用
google-chrome
时,我得到 多个问题 例如2a) 尝试获取屏幕截图 - FAILs 显示
Network service crashed, restarting service
无限循环 - 必须按 CTRL^C 才能停止(base) etzimopoulos@DESKTOP-HI9P6E4:~$ google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ [0626/055458.471044:ERROR:udev_watcher.cc(61)] Failed to enable receiving udev events. [0626/055458.612113:ERROR:network_service_instance_impl.cc(262)] Network service crashed, restarting service. [0626/055458.696014:ERROR:network_service_instance_impl.cc(262)] Network service crashed, restarting service. ...
2b) 尝试使用 不同的参数
--no-sandbox --disable-setuid-sandbox
获取屏幕截图,这次出现不同的错误。$ sudo google-chrome --no-sandbox --disable-setuid-sandbox --headless --screenshot https://www.chromestatus.com/ [0626/061854.348849:ERROR:udev_watcher.cc(61)] Failed to enable receiving udev events. [0626/061855.311675:ERROR:platform_shared_memory_region_posix.cc(46)] Descriptor access mode (0) differs from expected (2) [0626/061855.312483:WARNING:crash_handler_host_linux.cc(366)] Could not translate tid - assuming crashing thread is thread group leader; syscall_supported=0 [0626/061855.474617:WARNING:crash_handler_host_linux.cc(366)] Could not translate tid - assuming crashing thread is thread group leader; syscall_supported=0 --2020-06-26 06:18:55-- https://clients2.google.com/cr/report Resolving clients2.google.com (clients2.google.com)... 216.58.210.46, 2a00:1450:4009:800::200e Connecting to clients2.google.com (clients2.google.com)|216.58.210.46|:443... connected. HTTP request sent, awaiting response... [0626/061855.655013:ERROR:headless_shell.cc(399)] Abnormal renderer termination. 429 Too Many Requests 2020-06-26 06:18:55 ERROR 429: Too Many Requests. Unexpected crash report id length Failed to get crash dump id. Report Id: ```
尝试 运行 具有相同参数的 Windows 可执行文件 Chrome.exe,似乎 运行但没有截图(我的目录中没有新文件)
尝试 运行
google-chrome
没有 在 WSL 中提升权限我得到一个不同的错误:google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Failed to generate minidump.Illegal instruction (core dumped)
如有任何帮助或指导,我们将不胜感激。我的另一个选择是 运行 windows 10 上的虚拟机,带有本地 Linux UI 和终端,这可能会工作。
但是有没有办法在 WSL 中进行所有设置?
谢谢。
试试这个(在 wsl2 中测试)
在您的 wsl2 ubuntu 控制台中输入以下命令:
#install packages
sudo apt-get install -y curl unzip xvfb libxi6 libgconf-2-4 fonts-liberation
#get latest chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
#install it
sudo apt install ./google-chrome-stable_current_amd64.deb
#test a screenshot
google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/