Этот скрипт не использует опрос. Другими словами, он не делает периодических проверок. Вместо этого он использует инструмент 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, нажмите здесь.