Тройник вызывает зависание скриптов bash

У меня есть скрипт, который вызывает ряд других скриптов установки

./script1.sh 2>&1 | tee script1.log<br>
./script2.sh 2>&1 | tee script2.log<br>
./script3.sh 2>&1 | tee script3.log<br>

Все они выглядят нормально до последнего, который выполняет вызов пользовательского сценария инициализации. Этот сценарий инициализации запускает daemon как /usr/local/daemon &. т.е. ставит это на задний план.

Объедините это с использованием tee и основной скрипт висит как финал tee никогда не выходит.

Сценарий инициализации - это приложение.NET, работающее в режиме моно, поэтому я очень мало контролирую его. Если я не использую tee тогда все выглядит хорошо. Запуск последней команды из командной строки имеет тот же эффект.

Если кто-нибудь может подсказать, как правильно завершить работу сценария, я был бы благодарен. На данный момент я переместил вызов сценария инициализации из script3 в родительский сценарий, и он работает нормально, но, конечно, он не зарегистрирован.

2 ответа

Это может быть не лучшим ответом, но вы можете сделать tee script3.log & (с амперсандом в конце), чтобы скрипт мог завершиться без зависания. У него есть побочный эффект завершения сценария перед завершением script3.sh,

Tee не выйдет изящно, пока не закроется stdout родительского и дочернего процессов. Попробуйте перенаправить стандартный вывод демона

/usr/local/daemon > /dev/null 2>&1 &
Другие вопросы по тегам