我想知道是否可以编写一个脚本来监视文件中的更改并在检测到更改时执行一些操作。
详细说明:
- OpenVPN每1分钟将其状态写入一个文件。
- 我需要解析此状态文件并采取措施。
- OpenVPN在写入之前会截断状态文件。
- 我尝试写入命名管道,但是当应用程序无法截断管道时,我在应用程序中遇到了不想要的(但不是致命的)错误。
我想知道是否可以编写一个脚本来监视文件中的更改并在检测到更改时执行一些操作。
详细说明:
Answers:
廉价的肮脏方式:
stat -c %Y file
修改时间更改时循环播放并采取措施。
可能更好:
使用inotify cron服务来监视文件修改事件并运行您的操作:
/path/to/your/file IN_MODIFY /path/to/your/script $#
看一下incron [1]或其他inotify-stuff来触发脚本的执行。
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=zh-CN
inotify将是正确的方法。某些LinuxForYou杂志版提供了有关此问题的教程。
快速而肮脏的方式:
function wait_file_changed {
tail -fn0 "$1" | head -n1
}
wait_file_changed /tmp/potato
tail -f
可能是最简单的方法。但仅用于追加。