AWS EC2 Linux实例安装Chrome报错scaling_cur_freq与scaling_max_freq不存在
错误性质说明
你遇到的报错属于非致命警告,不会影响Chrome的正常功能。报错的原因是Chrome默认会尝试读取系统CPU调频相关的sysfs节点统计硬件信息,而AWS EC2的虚拟化环境默认不会暴露cpufreq相关的路径,因此会触发该文件不存在的报错。
适配Selenium场景的解决方案
方案1:启动Chrome时添加参数(推荐)
你搭配Selenium使用的场景不需要启动带图形界面的Chrome,只要在启动参数中添加对应配置,即可彻底屏蔽该报错,同时适配EC2无图形界面的运行环境:
--headless=new:启用新版Chrome无头模式,无图形界面运行,兼容性和性能优于旧版无头模式--no-sandbox:适配EC2中使用root或sudo权限运行Chrome的场景--disable-dev-shm-usage:解决t2.micro这类小规格实例共享内存分区不足的问题--disable-cpu-throttling:关闭Chrome的CPU调频检测逻辑,从根源避免触发报错
如果要直接测试命令行启动无报错,执行以下命令即可:
google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --disable-cpu-throttling &
Selenium调用Chrome的Python示例代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 添加适配EC2环境的启动参数 chrome_options.add_argument("--headless=new") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-cpu-throttling") # 如chromedriver已加入系统PATH,无需指定executable_path参数 driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.example.com") print(driver.page_source[:100]) driver.quit()
方案2:手动创建空文件(临时兼容方案)
如果需要兼容老版本Chrome或者其他依赖该路径的程序,可以手动创建对应的空文件绕过检测:
sudo mkdir -p /sys/devices/system/cpu/cpu0/cpufreq sudo touch /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
该修改会在实例重启后失效,如需永久生效可将上述两条命令添加到/etc/rc.local文件中开机自动执行。
内容的提问来源于stack exchange,提问作者thegreatt
相关产品推荐
相关产品推荐

