Как добраться до возможных новых файлов - PullRequest
0 голосов
/ 02 декабря 2019

Я делаю сценарий, который должен соединить несколько строк вывода из другого сценария с несколькими файлами
Идея состоит в том, чтобы сделать что-то вроде присоединяемых слушателей
Проблема в том, что некоторые файлы не знают при запуске, большефайлы могут быть созданы для получения данных

Например:

# using yes instead of the actual script
yes | tee listeners/* >> /dev/null &
touch listeners/a

тройник будет передавать файлы, уже находящиеся в папке, но никогда a

Iможет сделать цикл чтения, чтобы начать ти после каждой строки, но это делает его намного медленнее
Есть ли другой способ сделать это? Даже другой дизайн для этого?

1 Ответ

0 голосов
/ 02 декабря 2019

Основываясь на комментариях Чарльза Даффи, я сделал что-то вроде этого:

rm -f pipe && mkfifo pipe
script > pipe &

rm -f pid
inotifywait -m -e create -e delete listeners/ --format '%f' \
| (while read -r file; do
       [ -f pid ] && kill "$(cat pid)"
       cat pipe | tee listeners/* >> /dev/null &
       echo "$(jobs -p)" > pid
   done)

Это действительно быстрее, чем цикл чтения, и практически не использует CPU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...