Всем добрый день!
Есть вопрос по запуску задач (jobs) в конвеере (pipe).
Есть небольшой скрипт test.sh:
#!/bin/bash
sleep 5 &
echo 'done'
exit 0
В нем две основные команды. Первая эмулирует "сложную работу" - это "sleep 5", причём запускается она как задача (job). Вторая команда - информационная "echo 'done'".
Тест1: Если запустить скрипт с измерением параметров вермени ("time") выполнения:
$ time ./test.sh
done
real 0m0.005s
user 0m0.000s
sys 0m0.000s
Здесь мы видим, что скрипт выполнился быстро (время не затрачено на команду "sleep 5 &").
Тест2: Если запустить тот же скрипт, но в конвейере:
$ time ./test.sh | tail
done
real 0m5.012s
user 0m0.000s
sys 0m0.000s
то видим, что время, затраченое на конвейер равно времени выполнения команды "sleep" и "echo". Т.е. фоновая задача держит весь конвейер.
Вопрос: как запустить команду "sleep" (фоновую задачу) в крипте "test.sh", чтобы она не "держала" весь конвейер?
Заранее спасибо!