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»