主管不重新启动该进程

主管不重新启动该进程

我正在使用 Supervisor 来监控一个进程,这是一个运行命令的小型 Bash 脚本。这是我的 Supervisor 进程配置文件

 [program:ngrok_worker]
    command=/home/pi/scripts/remoteacess.sh
    autostart=true
    autorestart=true
    stdout_logfile=/tmp/ngrok-worker.log
    stderr_logfile=/var/log/supervisor/test.err.log
    redirect_stderr=true

当我在 /var/log/supervisor 中看到主管日志时,我发现

2017-05-08 19:56:23,089 INFO gave up: ngrok_worker entered FATAL state, too many start retries too quickly
2017-05-08 19:59:14,748 INFO spawned: 'ngrok_worker' with pid 16807
2017-05-08 19:59:14,879 INFO exited: ngrok_worker (exit status 0; not expected)
2017-05-08 19:59:15,901 INFO spawned: 'ngrok_worker' with pid 16817
2017-05-08 19:59:16,212 INFO exited: ngrok_worker (exit status 0; not expected)
2017-05-08 19:59:18,261 INFO spawned: 'ngrok_worker' with pid 16830
2017-05-08 19:59:18,731 INFO exited: ngrok_worker (exit status 0; not expected)
2017-05-08 19:59:21,789 INFO spawned: 'ngrok_worker' with pid 16882
2017-05-08 19:59:22,111 INFO exited: ngrok_worker (exit status 0; not expected)
2017-05-08 19:59:23,115 INFO gave up: ngrok_worker entered FATAL state, too many start retries too quickly

我在工作配置文件中没有发现任何拼写错误,如果我使用以下方法手动终止该进程,我无法找出为什么主管无法重新启动该进程sudo kill <PID>

编辑 -1:根据这里的一些建议关联 startsecs =0但是当我检查日志时,就像这个命令正在一次又一次地重新启动脚本,这就是为什么ngrok每秒创建新隧道一次,这是不可取的。

这是我的 bashscriot,用于从 bashscript 运行 ngrok

#!/bin/bash

sudo ngrok tcp 22 --config=/home/pi/.ngrok2/ngrok.yml  --log=stdout > /home/pi/ngrok.log &

答案1

我认为问题出在脚本末尾的“&”符号上。这会将 ngrok 命令发送到后台,supervisord 会将其识别为服务停止。无需使用 supervisord 在后台运行进程。

另外,为什么要使用 bash 脚本启动 ngrok,而不是直接从 Supervisord 配置文件启动它?例如:

[program:ngrok_worker]
command=ngrok tcp 22 --config=/home/pi/.ngrok2/ngrok.yml
autostart=true
autorestart=true
stdout_logfile=/tmp/ngrok-worker.log
stderr_logfile=/var/log/supervisor/test.err.log
redirect_stderr=true

相关内容