Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terminal ngrok在后台运行_Terminal_Ngrok - Fatal编程技术网

Terminal ngrok在后台运行

Terminal ngrok在后台运行,terminal,ngrok,Terminal,Ngrok,我试着在后台用 ./ngrok -subdomain test -config=ngrok.cfg 80 & 进程正在运行 [1] 3866 子域不起作用 它与 ./ngrok -subdomain test -config=ngrok.cfg 80 你们中有人知道这里发生了什么吗?如前所述 在Ngrok 2中,-log既不必要也不可用(尽管您可以在配置文件中控制日志级别)ngrok>/dev/null&就足够了 访问您的本地计算机,或在此处查看更多信息:。使用下面的ngrok2脚

我试着在后台用

./ngrok -subdomain test -config=ngrok.cfg 80 &
进程正在运行

[1] 3866
子域不起作用

它与

./ngrok -subdomain test -config=ngrok.cfg 80
你们中有人知道这里发生了什么吗?

如前所述


在Ngrok 2中,-log既不必要也不可用(尽管您可以在配置文件中控制日志级别)
ngrok>/dev/null&
就足够了

访问您的本地计算机,或在此处查看更多信息:。

使用下面的ngrok2脚本

nohup ngrok http 3000 &

如果您想使用多个shell窗口或从一个SSH会话在后台运行任何服务(最简单的方法是使用),这将把日志写入文件nohup.out

要在Centos Linux上安装,请使用
yum安装屏幕

然后像任何其他命令一样启动
屏幕
,然后在参数中键入
ngrok
命令

分离是屏幕最强大的部分。屏幕允许您从窗口分离并稍后重新连接

如果网络连接失败,屏幕将自动断开会话! 您可以使用“Ctrl-aD”从窗口分离

这会让你回到你的壳里


所有屏幕窗口仍然存在,您可以稍后使用
screen-r

运行
/ngrok http 5000>/dev/null&
重新连接到它们,然后
curl localhost:4040/status
检查url

运行/ngrok http(端口号)& 这运行ngrok隧道作为后台进程。 Ngrok通常会打开一个窗口,显示指定的URL,但由于我们使用的是nohup命令,因此不可见

因此,然后运行curl
也可以查看ngrok分配的URL,如前所述,您可以在后台使用

./ngrok http 8080 > /dev/null &
接下来,您可以使用curl,例如
jq
命令行JSON处理器

export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"

您的URL可以从$WEBHOOK\u URL env变量访问,您可以在任何地方使用它。

尝试作为服务运行。并从ngrok网站查看。 我在树莓皮3上尝试了ngrok版本2.2.8

ngrok.as服务

[Unit]
Description=Share local port(s) with ngrok
After=syslog.target network.target

[Service]
Type=simple
Restart=always
RestartSec=1min
StandardOutput=null
StandardError=null
ExecStart=/usr/local/sbin/ngrok start --log /var/log/ngrok.log --config /etc/ngrok.yml --all
ExecStop=/usr/bin/killall ngrok

[Install]
WantedBy=multi-user.target
配置文件:ngrok.yml authtoken:

tunnels:
  <your Tunel Name >:
    proto: http
    addr: 80
隧道:
:
协议:http
地址:80

您可以使用屏幕。以下是我如何使用它的示例:

screen-d-m~//ngrok-http-test.cc:8080

您将看到公共url信息

下面是一个例子。

如果你用ngrok账号链接,那么你可以在ngrok站点查看公共url,不需要卷曲本地url
公共url

nohup./ngrok http 80&


点击localhost:4040获取ngrok分配的公共URL,这里是我编写的一个小bash脚本,它在后台运行。然后,它尝试通过调用
curl
命令(反对),然后调用
sed
命令(提取NGROK公共URL),来设置
NGROK\u PUBLIC\u URL
变量。这一切都在一个循环中运行,直到
NGROK_PUBLIC_URL
有一个有效值,因为它的隧道建立通常需要NGROK 2或3秒

start ngrok.sh
脚本将端口作为可选的命令行参数,即

$ . start-ngrok.sh 1234

Run NGROK in background on port [ 1234 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 75d5faad.ngrok.io ]
。。。但如果未提供端口,则将在端口
8080
上运行

$ . start-ngrok.sh 

Run NGROK in background on port [ 8080 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 07e7a373.ngrok.io ]
NGROK\u PUBLIC\u URL
现在包含公共URL,即

$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
这可以在您的应用程序中访问/使用

注意:此脚本需要源代码(
启动ngrok.sh
源代码启动ngrok.sh
)。这是因为它正在设置一个环境变量,如果在新shell中正常运行(即
/start ngrok.sh
),该环境变量将不可用。有关更多信息,请参阅

您还可以使用
pkill
/
kill
等创建一个小脚本来停止后台
ngrok
进程:-

停止ngrok.sh

简单:
ngrok http 80--log=stdout>ngrok.log&
成功了。所以我尝试了所有方法,但在2020年最有效的答案是:

如何创建公共本地主机(8080):

然后


你可以用。这是ngrok替代方案。cotunnel安装脚本创建服务并在后台自行工作。

另一种选择是使用。如果已安装Node,则可以运行ngrok并打印URL,如下所示:

require('ngrok')。连接({proto:'http',端口:3000})。然后(url=>{
console.log(url);
});

不是严格地在后台运行它,但我发现这是满足我需求的最简单的方法:启动ngrok和一个web服务器,该服务器在一个命令中就知道它的ngrok url。

不适用于ngrok2。有新版本的想法吗?@toas939哦,谢谢你!答案太多,没有一个是正确的。如果您希望在生产环境中运行此服务,而不必打开终端,您可以创建并运行ngrok作为一项服务,它将在机器启动时自动启动。在这里查看说明@dave4jr:ngrok客户端中是否包含ngrok链接,还是必须安装其他链接?服务命令未被识别ngrok@AndyFaizan不幸的是,这确实需要一点额外的费用,我忘记了我们公司为此支付了多少费用,但我不记得这是多少。但我如何知道访问我的服务的URL?如果你想这样做,你必须在前台运行它(AFAIK)。后台运行主要有助于作为服务运行,而您可能更了解您的域。请参阅我的答案,这是一种方法。还有Artem的答案(附带我的一条评论,对其进行轻微修改)@奥利夫:检查URL最简单的方法是登录Ngrok网页并使用仪表板。如果没有链接就无法使用答案,通常认为这是一个糟糕的答案。或者在Ngrok网站上注册一个免费帐户,并将本地安装连接到它,然后你就可以了
./ngrok http 80 -log=stdout > /dev/null &
$ . start-ngrok.sh 1234

Run NGROK in background on port [ 1234 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 75d5faad.ngrok.io ]
$ . start-ngrok.sh 

Run NGROK in background on port [ 8080 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 07e7a373.ngrok.io ]
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
#!/bin/sh

echo "Stopping background ngrok process"
kill -9 $(ps -ef | grep 'ngrok' | grep -v 'grep' | awk '{print $2}')
echo "ngrok stopped"
ngrok -log=stdout 80 > ngrok.log &
curl http://127.0.0.1:4040/api/tunnels
./ngrok http 80 -log=stdout > /dev/null &