在我的脚本中,我启动了多个后台进程,其中一个是
(
tail -qF -n 0 logs/nginx/*.log
) &
processes[logs]=$!
for process in "${!processes[@]}"; do
wait "${processes[$process]}"
done
当发送SIGTERM信号时,所有进程结束,只有tail还在运行。经过一些测试,我想出了将tail发送到后台的解决方案,并且它有效。
(
tail -qF -n 0 logs/nginx/*.log &
) &
processes[logs]=$!
for process in "${!processes[@]}"; do
wait "${processes[$process]}"
done
有人能向我解释一下,当我在子shell中发送tail到后台时发生了什么,所以当SIGTERM到达时它结束了?
我的尾巴在我提供的例子中没有被杀死,它只被发送到后台,允许脚本退出。
我已经将tail附加到我的服务器上,所以在我的服务器死亡后,tail也会死亡。现在它就像我想要的那样了
tail -qF -n 0 --pid=${process_list[server]} logs/nginx/*.log