Docker s6-overlay在SIGTERM上延迟closures

我有一个s6覆盖docker容器,运行2个进程, nginxphp-fpm 。 在我的体系结构中,一个服务可以被赋予一个SIGTERM但是仍然可以在另一个caching中存在10秒,所以在收到SIGTERM之后它必须可以访问。

所以我试图在我的run文件中为php-fpm启动trap这个信号,但我不认为我理解如何正确执行此操作。 我试过这个:

 #!/usr/bin/execlineb -P trap -x { SIGTERM { sleep 10 #echo "helllllllllo" } } with-contenv php-fpm 

但s6似乎忽略了sleep 10 ,无论如何,通过php-fpm SIGTERM 。 如果我不回复echo那么它会打印出来,但是仍然会把信号传递给php-fpm

此外,当捕获信号我得到这个错误,但容器终止继续罚款:

s6-svscanctl:fatal:无法控制/ var / run / s6 / services:pipe理员不听

我怎样才能延迟信号使其成为php-fpm ? 最好的办法是写一个文件,说明SIGTERM已经收到,这样我的PHP应用程序就可以知道它,并能稍微改变它的行为。