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

Linux后台进程停止求助:ngrok后台启动后自动终止

我明白你遇到的头疼问题——当你的Linux服务启动ngrok后,明明把它丢到后台运行,结果总是莫名其妙终止对吧?我之前折腾类似场景时也踩过这些坑,大概率是会话退出导致进程被SIGHUP信号杀死,再加上你之前的命令里重定向写法有问题,先给你拆解下问题,再给几个靠谱的解决办法:

先说说你之前命令的问题

  1. 单纯加&的命令:./ngrok ... 22 &只是把进程放到后台,但如果启动它的父进程(你的Linux服务)退出,或者当前终端会话关闭,ngrok会收到系统发送的SIGHUP信号直接终止。
  2. 重定向顺序错误:你写的& > /dev/null或者& > /ngrok/ngrok.log顺序搞反了,重定向要放在后台符号&前面,不然系统会把重定向当成命令参数,根本没生效。
  3. nohup用法错误:nohup ./ngrok ... & > /ngrok/ngrok.log同样是顺序问题,nohup的输出重定向必须放在正确位置才能生效。

方法1:修正nohup的用法(最常用的后台运行方式)

nohup的核心作用就是让进程忽略SIGHUP信号,同时正确重定向所有输出,命令应该这么写:

nohup ./ngrok --config="./ngrok-config" -proto=tcp -subdomain="test" 22 > /ngrok/ngrok.log 2>&1 &

给你解释下关键部分:

  • 2>&1:把标准错误(stderr)重定向到标准输出(stdout),这样所有日志(包括报错)都会写到指定的ngrok.log里
  • &放在最后:代表把整个nohup命令放到后台运行
  • 这样即使启动它的父进程退出,ngrok也能继续保持运行状态

方法2:用screen/tmux(适合需要随时查看进程输出的场景)

如果你偶尔需要重新连接查看ngrok的实时输出,用screen会更灵活:

  1. 先安装screen(Debian/Ubuntu):sudo apt install screen;CentOS/RHEL:sudo yum install screen
  2. 创建一个专属会话:screen -S ngrok_tunnel
  3. 在会话里直接运行ngrok命令:./ngrok --config="./ngrok-config" -proto=tcp -subdomain="test" 22
  4. 按下Ctrl+A再按D,就能脱离这个会话,ngrok会在后台继续跑
  5. 之后要查看输出的话,输入screen -r ngrok_tunnel就能重新连接会话

方法3:做成systemd服务(最稳定,适合长期运行)

如果你的Linux服务是长期在线的,最好把ngrok也做成systemd服务,这样系统启动时能自动拉起,进程意外终止还会自动重启:

  1. 创建服务文件:sudo nano /etc/systemd/system/ngrok.service,填入以下内容(记得替换占位符):
[Unit]
Description=Ngrok TCP Tunnel for SSH
After=network.target

[Service]
Type=simple
User=your_username  # 替换成运行ngrok的用户名
WorkingDirectory=/path/to/ngrok  # 替换成ngrok所在的目录
ExecStart=/path/to/ngrok --config="./ngrok-config" -proto=tcp -subdomain="test" 22
Restart=always  # 进程意外终止时自动重启
RestartSec=5  # 重启间隔5秒

[Install]
WantedBy=multi-user.target
  1. 重新加载systemd配置:sudo systemctl daemon-reload
  2. 启动服务:sudo systemctl start ngrok
  3. 设置开机自启:sudo systemctl enable ngrok
  4. 查看运行状态:sudo systemctl status ngrok

最后几个排查点

  • 检查ngrok配置文件ngrok-config的路径是否正确,运行用户有没有读取权限
  • 查看日志文件/ngrok/ngrok.log(或者systemd日志journalctl -u ngrok),看看有没有认证失败、端口被占用这类具体报错
  • 确保运行ngrok的用户有写入日志文件的权限,避免因为权限问题导致进程崩溃

内容的提问来源于stack exchange,提问作者Code Junkie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:53:45