个人笔记记录(常用)

个人笔记


inotifywait实现文件监控

<p><strong><a href="https://blog.csdn.net/u010837612/article/details/79657328">参考链接</a></strong></p> <p><strong>应用场景</strong> 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)</p> <p><strong>安装</strong> noitify下载地址:<a href="http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz">http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz</a></p> <pre><code class="language-shell">cd inotify-tools-3.14 ./configure make make install</code></pre> <blockquote> <p>安装成功后在<code>/usr/local/bin</code> 下会有<code>inotifywait</code> 和 <code>inotifywatch</code> 命令。</p> </blockquote> <p><strong>inotifywait命令使用</strong> 监听<code>/usr/local/src</code> 目录:</p> <pre><code>/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,delete,create,attrib /usr/local/src</code></pre> <p><strong>出现变化后执行对应命令</strong></p> <pre><code class="language-shell">/usr/bin/inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib,modify ${src} | while read DATE TIME FILES; do echo "At ${DATE} ${TIME},$FILES was backed up via rsync" &gt;&gt; /var/log/rsync_0.109.log done</code></pre> <p><code>参数:</code></p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>-m</td> <td>持续监听</td> </tr> <tr> <td>-r</td> <td>使用递归形式监视目录</td> </tr> <tr> <td>-q</td> <td>减少冗余信息,只打印出需要的信息</td> </tr> <tr> <td>-e</td> <td>指定要监视的事件,多个时间使用逗号隔开</td> </tr> <tr> <td><code>--timefmt</code></td> <td>时间格式</td> </tr> <tr> <td><code>--format</code></td> <td>监听到的文件变化的信息</td> </tr> </tbody> </table> <p><code>--timefmt</code>说明:</p> <p>ymd分别表示年月日,H表示小时,M表示分钟</p> <p><code>--format</code> 说明:</p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>%w</td> <td>表示发生事件的目录</td> </tr> <tr> <td>%f</td> <td>表示发生事件的文件</td> </tr> <tr> <td>%e</td> <td>表示发生的事件</td> </tr> <tr> <td>%Xe</td> <td>事件以“X”分隔</td> </tr> <tr> <td>%T</td> <td>使用由–timefmt定义的时间格式</td> </tr> </tbody> </table> <p>执行上面的命令之后,在监听的目录下创建一个1.txt文件,得到如下结果:</p> <pre><code>22/03/18 17:22 /usr/local/src/ 1.txt CREATE 22/03/18 17:22 /usr/local/src/ 1.txt ATTRIB</code></pre> <p>可监听的时间有:</p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>access</td> <td>访问,读取文件。</td> </tr> <tr> <td>modify</td> <td>修改,文件内容被修改。</td> </tr> <tr> <td>attrib</td> <td>属性,文件元数据被修改。</td> </tr> <tr> <td>move</td> <td>移动,对文件进行移动操作。</td> </tr> <tr> <td>create</td> <td>创建,生成新文件</td> </tr> <tr> <td>open</td> <td>打开,对文件进行打开操作。</td> </tr> <tr> <td>close</td> <td>关闭,对文件进行关闭操作。</td> </tr> <tr> <td>delete</td> <td>删除,文件被删除。</td> </tr> </tbody> </table> <p><strong>问题</strong></p> <p>如果在使用过程中出现</p> <pre><code>/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory</code></pre> <p>解决方案:</p> <pre><code>#32位系统: ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0 #64位系统: ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0</code></pre>

页面列表

ITEM_HTML