Я сталкиваюсь со странным поведением, у меня есть изображение Docker, у которого есть этот сценарий точки входа:
#!/bin/bash
trap " \
service apache2 stop; \
" SIGHUP SIGINT SIGTERM
trap "exit" ERR
service apache2 start
tail -f /var/log/apache2/access.log
Предыдущий скрипт НЕ обрабатывает SIGTERM, как предполагалось, он просто ничего не делает! (Я вижу, что в журнале Apache он был нечисто прерван), и Docker ждет 10 секунд, а затем уничтожает его.
Но когда я меняю последнюю строку на следующую, она работает отлично !
tail -f /var/log/apache2/access.log & wait
Ниже также не работает:
tail -f /var/log/apache2/access.log &
Может ли кто-нибудь объяснить это поведение для меня? Я не понял, почему это происходит. Что за магия позади & wait
? И есть ли лучший способ сохранить работоспособность контейнера Docker и в то же время быть способным обрабатывать сигналы?