Bash脚本入口点(PID = 1)杀死`尾巴`subprocess只有当一个假陷阱(没有什么)在那里

我正在面对一个奇怪的行为,我的Bash脚本,我有这个Bash脚本运行与PID 1 (这是一个Docker容器的entrypoint ,如果你不熟悉Docker,我假设你可以忽略这个信息)。

当我运行下面的脚本时, SIGTERM很快终止一切,一切似乎都没有问题(请记住, sshd服务不存在!我的整个系统只启动这个只运行tail脚本,但直到现在它不是问题)。

 #!/bin/bash trap "pkill sshd" SIGTERM export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi 

当我删除该trap时,问题出现了。 现在我的系统挂起,似乎是因为尾巴直到运行,并没有因某种原因而结束。 (如果你熟悉Docker,Docker会等待10秒,然后杀死容器,因为它没有响应SIGTERM ,如果你不熟悉Docker,请忽略此信息)。

 #!/bin/bash export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi 

有人向我解释究竟是什么问题? 为什么这个假trap让所有的东西都起作用(虽然它几乎没有任何作用,但它起作用,因为它只是在那里)。

我只是还想提一下,使用一个空的traptrap "" SIGTERM没有帮助,应该在陷阱中有一些工作(即使它什么都不做)。

希望有人能帮助我,谢谢!