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
Чтобы осуществлять скрипт, попробуйте запустить его, а затем вытягивая свой системный журнал в пейджер. Когда вы выходите из пейджера, ваш сценарий также должен выйти. Это и другие примеры доступны на Гадость . Я буду рад попытаться ответить на любые вопросы.
Оригинал: «https://dev.to/jrbrtsn/event-driven-bash-5a6b»