You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何让Ubuntu服务器上的Headless Chrome 24/7持续运行?

我来帮你搞定Ubuntu服务器上让Headless Chrome全天候跑起来的问题!之前SSH一断开remote-debugging就挂、PHP脚本启动失败的情况,试试下面这几个靠谱方案,总有一个适合你:

方案1:用nohup快速后台启动

这是最直接的临时解决方案,适合快速测试。直接在SSH里运行:

nohup google-chrome --headless=new --remote-debugging-port=9222 --disable-gpu > chrome-headless.log 2>&1 &
  • nohup会让进程彻底脱离当前终端,哪怕SSH断开也能继续运行
  • > chrome-headless.log 2>&1把所有输出(包括错误信息)写到日志文件里,方便后续排查问题
  • &让进程直接在后台启动

要停止的话,先找到进程ID:

ps aux | grep google-chrome

然后用kill -9 <PID>杀掉对应进程就行。

方案2:用screen/tmux持久化会话

如果你偶尔需要重新连接进去查看Chrome的运行状态,这个方法特别合适。

用screen的步骤:

  1. 先安装screen(没装过的话):
sudo apt update && sudo apt install screen
  1. 创建一个专属会话:
screen -S chrome-headless
  1. 在会话里直接启动Chrome:
google-chrome --headless=new --remote-debugging-port=9222 --disable-gpu
  1. 按Ctrl+A再按D,就能分离会话——此时SSH断开完全不会影响进程运行
  2. 下次想重新连接查看,运行:
screen -r chrome-headless
  1. 要关闭会话的话,在会话里按Ctrl+D,或者用screen -X -S chrome-headless quit

用tmux的话步骤类似:

安装tmux后,用tmux new -s chrome-headless创建会话,Ctrl+B+D分离,tmux attach -t chrome-headless重新连接就行。

方案3:配置systemd服务(推荐,长期运行最稳定)

这是服务器上运行长期服务的标准操作,不仅能自动开机启动,进程挂了还会自动重启,稳得一批。

  1. 创建systemd服务文件:
sudo nano /etc/systemd/system/chrome-headless.service
  1. 粘贴下面的内容(记得把your-username换成你的实际用户名,比如ubuntu):
[Unit]
Description=Headless Chrome with Remote Debugging
After=network.target

[Service]
User=your-username
ExecStart=/usr/bin/google-chrome --headless=new --remote-debugging-port=9222 --disable-gpu --no-sandbox --disable-dev-shm-usage
Restart=always
RestartSec=5
StandardOutput=journal+console
StandardError=journal+console

[Install]
WantedBy=multi-user.target
  • --no-sandbox和--disable-dev-shm-usage是为了避免服务器环境下的权限和内存限制问题
  • Restart=always确保进程意外退出后自动重启
  • User指定运行Chrome的用户,别用root,避免安全风险
  1. 保存文件后,重新加载systemd配置:
sudo systemctl daemon-reload
  1. 启动服务并设置开机自启:
sudo systemctl start chrome-headless.service
sudo systemctl enable chrome-headless.service
  1. 查看服务运行状态:
sudo systemctl status chrome-headless.service
  1. 查看实时运行日志:
journalctl -u chrome-headless.service -f
  1. 停止服务的话:
sudo systemctl stop chrome-headless.service

为啥之前PHP脚本启动没成功?

大概率是因为PHP运行在web服务器的用户(比如www-data)权限不足,或者没让Chrome脱离终端环境。如果一定要用PHP启动,你可以让PHP调用systemd的启动命令(需要给www-data加sudo权限,不推荐),或者在PHP里用nohup启动,但还是建议用systemd,稳定性和可维护性都强得多。

内容的提问来源于stack exchange,提问作者Charles Jeremy Colnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:08:35