inotifywait -m
"monitör" modudur : asla çıkmaz. Kabuk çalıştırır ve çıkış kodunun döngü gövdesini çalıştırıp çalıştırmayacağını bilmesini bekler, ancak bu asla gelmez.
Kaldırırsanız -m
çalışır:
while inotifywait -r -e close_write "/root/secondfolder/"
do
echo "close_write"
done
üretir
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/root/secondfolder/ CLOSE_WRITE,CLOSE bar
close_write
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
...
Varsayılan olarak, inotifywait bir döngü koşulunda olmasını istediğiniz "ilk olay gerçekleştikten sonra çıkacaktır".
Bunun yerine, aşağıdakilerin standart çıktısını okumayı tercih edebilirsiniz inotifywait
:
#!/bin/bash
while read line
do
echo "close_write: $line"
done < <(inotifywait -mr -e close_write "/tmp/test/")
Bu (bash) komut dosyası, işlem ikamesi kullanarak inotifywait
komutun her bir çıkış satırını $line
döngü içindeki değişkene okuyacaktır . Döngü etrafında her seferinde tekrarlayan saatler kurmayı önler, bu da pahalı olabilir. Eğer bash kullanamaz, bunun yerine boru döngüye komutu yapabilir misin: . bu moddaki her olay için bir çıkış satırı üretir, böylece döngü her biri için bir kez çalışır.inotifywait ... | while read line ...
inotifywait