이벤트 기반 Bash

1445 단어 bashdevops

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
스크립트를 연습하려면 실행하고 호출기에서 시스템 로그를 내보내십시오.호출기를 종료할 때 스크립트도 종료해야 합니다.
이 예제와 기타 예는 Github 에서 찾을 수 있습니다.
나는 어떤 질문에도 기꺼이 대답할 것이다.

좋은 웹페이지 즐겨찾기