我正在编写一个类似于这样的bash脚本包装fastcgi应用程序:
#!/bin/bash
# stuff
./fastcgi_bin
# stuff
由于 bash 只在前台脚本结束时执行信号陷阱,因此我不能仅仅使用 kill -TERM scriptpid
命令,因为 fastcgi 应用程序将继续运行。
我尝试将二进制文件发送到后台执行:
#!/bin/bash
# stuff
./fastcgi_bin &
PID=$!
trap "kill $PID" TERM
# stuff
但是,如果我像这样做,显然标准输入和输出没有被正确重定向,因为它不能连接到lighttpd的mod_fastcgi,前台版本可以正常工作。
编辑:我一直在研究这个问题,这是因为当一个程序在后台启动时,bash将/dev/null重定向到stdin,所以任何避免这种情况的方法也应该解决我的问题。
有没有提示如何解决这个问题?
killpg
。 - tchrist