イベントドリブンバッシュ
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号である.
私は、どんな質問にでも挑戦して、満足しています.
Reference
この問題について(イベントドリブンバッシュ), 我々は、より多くの情報をここで見つけました https://dev.to/jrbrtsn/event-driven-bash-5a6bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol