Akceptowana odpowiedź naprawdę działa (dzięki maxschlepzig), ale pozostawia monitorowanie inotifywait w tle, dopóki skrypt nie zakończy działania. Jedyną odpowiedzią, która dokładnie odpowiada twoim wymaganiom (tj. Oczekiwanie na pojawienie się pliku sleep.txt w / tmp) wydaje się być odpowiedź Stephane'a, jeśli katalog, który ma być monitorowany przez inotifywait, zostanie zmieniony z kropki (.) Na '/ tmp'.
Jeśli jednak chcesz użyć katalogu tymczasowego TYLKO do umieszczenia flagi sleep.txt i możesz się założyć, że nikt inny nie umieści żadnego pliku w tym katalogu, wystarczy poprosić inotifywait o obejrzenie tego katalogu pod kątem tworzenia plików:
Pierwszy krok: utwórz katalog, który będziesz monitorować:
directoryToPutSleepFile=$(mktemp -d)
Drugi krok: upewnij się, że katalog naprawdę tam jest
until [ -d $directoryToPutSleepFile ]; do sleep 0.1; done
Trzeci krok: poczekaj, aż pojawi się ŻADNY plik $directoryToPutSleepFile
inotifywait -e create --format '%f' --quiet $directoryToPutSleepFile
Plik, który umieścisz, $directoryToPutSleepFile
może mieć nazwę sleep.txt awake.txt, cokolwiek. Moment utworzenia dowolnego pliku w $directoryToPutSleepFile
skrypcie będzie przebiegał poza inotifywait
instrukcją.
$MAILPATH
.