迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

详细解释 supervisor 如何关闭任务

作者:迹忆客 最近更新:2022/12/26 浏览次数:

以下任务名称都用 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 (default 10)
...

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

OVER!!!!

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便