Этот скрипт не использует опрос. Другими словами, он не делает периодических проверок. Вместо этого он использует инструмент inotifywait , предназначенный для отслеживания изменений в файловой системе.
В этом сценарии inotifywait отслеживает текущий каталог (.). Каждый раз, когда файл создается в этом каталоге, inotifywait выдает его имя, и скрипт проверяет, соответствует ли он sleep.txt . Если это так, он объявляет о создании:
[ -e sleep.txt ] || while IFS= read -r fname
do_
[ "$fname" = sleep.txt ] && break
done < <(inotifywait -m -q -e create -e moved_to --format %f .)
echo "Finally, sleep.txt now exists!!!"
Подробнее
Опции, используемые для inotifywait имеют следующие значения:
-m означает следить за каталогом. Другими словами, не останавливайтесь в первый раз, когда что-то происходит, о чем стоит рассказать.
-q означает быть спокойнее, чем обычно.
-e create -e moved_to означает только отчет о файле, созданном или перемещенном в этот каталог.
--format %f говорит ему печатать имя файла каждый раз, когда происходит событие создания файла
. говорит, что каталог для мониторинга. Период . , всегда означает текущий каталог.
Установка inotifywait
В Debian-подобных системах inotifywait является частью inotify-tools и может быть установлен через:
apt-get install inotify-tools
MS Windows и OSX
inotifywait доступен для систем Linux, а также работает под управлением Cygwin.
Чтобы прочитать о похожих инструментах для Windows, нажмите здесь.
Для получения информации о похожих инструментах для Mac OSX, нажмите здесь.