当 Supervisor 收到 SIGTERM 时执行某些操作

当 Supervisor 收到 SIGTERM 时执行某些操作

我使用 Supervisor 来管理进程。是否可以让 Supervisor 在收到 SIGTERM(或其他信号)时运行命令?

答案1

不可以,如果不更改源代码并添加该功能,就无法定制 Supervisor 接收到信号时的行为。

您唯一能做的就是通过“stopsignal”选项指定进程停止时的终止信号。

答案2

以下是实现您想要的一种方法:

(1)创建一个新的shell脚本,我们将其命名为woker.sh

#!/bin/bash

function do_something {
  # do something
  exit 0
}

trap do_something SIGTERM

while true; do
  sleep 1
done

(2)将上述脚本文件supervisord.conf作为新的程序部分添加到您的 Supervisor 配置文件中:

[program:worker]
command=/usr/local/bin/worker.sh
stderr_logfile = /var/log/supervisord/worker-stderr.log
stdout_logfile = /var/log/supervisord/worker-stdout.log

你可以找到一个真实的例子这里

相关内容