イベントドリブンバッシュ



bashはシステム管理タスクを自動化するときに非常に便利です.場合によっては、外部イベントに基づいて行動を取る必要がありますが、これはどのように行うことができるの例がたくさんありません.これはとても簡単です.
#!/bin/bash -eu

# Launch inotifywait monitoring the syslog in a subprocess.
# Redirect stdout of subshell to pipe #3
exec 3< <(exec inotifywait -m /var/log/syslog)

# Read each line of output from inotifywait
while read -u 3 FILE OPS; do

   # stdin, stdout, stderr all available in loop

   echo "FILE= '$FILE', OPS= '$OPS'"

   # OPS are comma separated. Swap comma for space, deal with each individually.
   for op in ${OPS//,/ }; do

      # Branch on $op
      case $op in

         MODIFY)
            echo "$FILE was modified.";;

         ACCESS)
            echo "$FILE was accessed.";;

         CLOSE_NOWRITE)
            echo "$FILE was closed without changes."
            break 2;; 

# Other actions go here
      esac
   done
done

# Close pipe
exec 3<&-

# Only get here on loop exit, or if inotifywait quits.
exit 0
スクリプトを実行するには、それを実行し、次に、ページャでsyslogを引く.ページャを終了すると、スクリプトも終了します.
これ等は、Github号である.
私は、どんな質問にでも挑戦して、満足しています.