详细解释 supervisor 如何关闭任务

以下任务名称都用 goserver 表示

在supervisor中,关闭一个任务是很简单的。

$ supervisorctl stop goserver

只需要执行上面的命令即可关闭你所要关闭的任务。 不过,问题来了。正如我们在新建supervisor任务中看到的,配置文件中的 command 选项是用来配置要开启一个任务所执行的命令。这样,这个程序我们是可以自己来定义的。

$ supervisorctl start goserver

在执行上面开启任务的命令的时候,supervisor其实是去执行command配置的命令的。 那么supervisor有没有提供一个停止任务的时候要执行的命令的选项呢,如果有的话那我们就在停止任务的时候让程序来做一些事情了。可是很遗憾,这样的选项没有。 supervisor是通过向进程发送信号的方式来停止任务的。 在配置文件中是可以通过选项来指定通过什么信号来停止的。

[program:yourtaskname]

...

stopsignal=QUIT ; signal used to kill process (default TERM)

stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default10)

...

stopsignal 用来指定发送什么信号来停止进程。如果不指定改选项,默认使用TERM 信号来停止,指定了就会发送相应的信号来停止进程。所以我们只需要在我们的程序中接收相应的信号,从而进行相应的操作就可以了。 stopwaitsecs 是用来指定停止任务的所等待的时间的(以秒为单位)。也就是说发送了stopsignal指定的信号要终止进程,而程序接收到信号之后处理的事情很多,超过等待时间了还没有执行完,那supervisor将使用终极大招,发送SIGKILL信号,来终止进程。这时候不管你的程序在做什么,都将被无情的终止掉。

OVER!!!!

本文转载自:迹忆客(https://www.jiyik.com)

以上是 详细解释 supervisor 如何关闭任务 的全部内容, 来源链接: utcz.com/z/290194.html

回到顶部