23 Mart 2020 Pazartesi

inotifywait komutu - inotify-tools Paketi

Giriş
Bu komut inotify-tools paketi ile geliyor.

-e seçeneği
İzlenmesi istenen olayları belirtir. create, moved_to, move_from, close_write vs olabilir.
Örnek
Açıklaması şöyle
you can have a program in the background that updates the symlink using inotify and the fact that later files sort as being later with LC_COLLATE=C:
Şöyle yaparız./path dizininde bir değişiklik olursa bu dizindeki dry-run ismi ile başlayan dosyalar bulunur. En sonra dosya latest ismi ile soft link oluşturulur. Yani /path/latest en son oluşturulan örneğin dryrun-161134-abc.txt isimli dosyaya işaret eder.
#!/bin/bash -e

export LC_COLLATE=C
shopt -s nullglob

base=/path

while inotifywait -e create \
                  -e moved_to \
                  -e moved_from \
                  -e close_write "$base" > /dev/null; do
    dirs=("$base"/dryrun-[0-9]*/)
    (( ${#dirs[@]} )) && ln -sfn -- "${dirs[-1]}" "$base"/latest
done
Örnek
Şöyle yaparız. /tmp dizininde yeni bir dizin yaratılırsa bu yeni dizin izlenir ve içindeki dosyalar başka bir yere kopyalanır
#!/bin/sh

TMP_DIR=/tmp
CLONE_DIR=/tmp/clone
mkdir -p $CLONE_DIR

wait_dir() {
  inotifywait -mr --format='%w%f' -e create "$1" 2>/dev/null | while read file; do
    echo $file
    DIR=`dirname "$file"`
    mkdir -p "${CLONE_DIR}/${DIR#$TMP_DIR/}"
    cp -rl "$file" "${CLONE_DIR}/${file#$TMP_DIR/}"
  done
}

trap "trap - TERM && kill -- -$$" INT TERM EXIT

inotifywait -m --format='%w%f' -e create "$TMP_DIR" | while read file; do
  if ! [ -d "$file" ]; then
    continue
  fi

  echo "setting up wait for $file"
  wait_dir "$file" &
done

-m seçeneği - monitor
Sonsuza kadar çalış anlamına gelir.
Örnek
Şöyle yaparız.
#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
        ls -hltr
done
-t seçeneği
Şöyle yaparız
touch $HOME/.cache/sentinel
inotifywait -t 300 $HOME/.cache/sentinel
Dosyadaki değişikliği tetiklemek için şöyle yaparız
touch $HOME/.cache/sentinel

Hiç yorum yok:

Yorum Gönder