我有这个简单的bash脚本:
#!/bin/bash
trap "rm /testfile; service apache2 stop;" SIGTERM
service apache2 start
# Here I want to create new bash session for some reasons.
/bin/bash
现在另一个程序可以将SIGTERM
发送到此脚本,但是实际上脚本没有响应该信号,它会一直挂在新的bash会话中,同样的情况我使用其他类似sleep infinity
的东西而不是打开新的bash会话(那只是为了测试,因为我需要那个bash会话)。
如何对该SIGTERM进行此脚本响应?新bash会话终止的方式并不重要,我只想确保我在{{{ 1}}将被执行。
答案 0 :(得分:1)
在定义陷阱的shell获得控制权之前,不会调用该陷阱。由于你启动了bash并且这个新进程获得了控制权,所以陷阱永远不会被调用。