incrond là gì ?
Các incrond (inotify cron daemon) là một daemon mà theo dõi các sự kiện hệ thống tập tin (chẳng hạn như thêm một file mới, xóa một tập tin, vv) và thực hiện lệnh hoặc các kịch bản shell. Đó là nói chung là tương tự như crond ,khác biệt ở nếu thư mục nguồn thay đổi lập tức thư mục đích cũng thay đổi .
inotify là một công nghệ thông báo hệ thống tập tin inode trên. Nó cung cấp khả năng chỉ đơn giản là theo dõi các sự kiện khác nhau trên các tập tin trong hệ thống tập tin. Đó là một sự thay thế rất nhiều mạnh mẽ của dnotify. inotify mang lại một cách thoải mái như thế nào để quản lý các tập tin được sử dụng trong các ứng dụng của bạn.
I.Cài đặt incron
Trước khi cài đặt incron cần cài đặt kho epel
# yum install incron -y
II.Khởi động vào cho chạy cùng hệt thống
# service incrond start
# chkconfig incrond on
Các file cấu hình của incrond
Cú pháp của incron như sau
<directory> <file change mask> <command or action> options
<directory> : là đường dẫn hệ thống tập tin , bất kỳ thay đổi nào trên đường dẫn này sẽ dẫn đến lệnh hoặc hành động đã thiết lập
<file change mask> : Là sự kiện của tập tin hệ thống ,mỗi sự kiện có thể dẫn đến lệnh khác nhau, sử dụng những mẫu sau để thay vào
Một số mask khác
<command or action> : Chưa lệnh hoặc hành động
options : là các lệnh sau
Trước khi chỉnh sửa incrontab ,ta cần gõ lệnh sau để sửa file
# export EDITOR=nano
Gõ lệnh sau để chỉnh sửa incrontab của bạn :
# incrontab -e
Ví dụ : Ta thêm dòng sau vào incrontab, với nội dung nếu thư mục home có thay đổi thì sẽ chạy lệnh echo
/home/ IN_MODIFY echo "$$ $@ $# $% $&"
Sau đó ta vào thư mục home và tạo file test, để kiểm tra incron hoạt động ta dùng lệnh sau
# cat /var/log/cron
Sau đó sẽ hiện ra các dòng sau
Oct 5 23:25:02 maxserver incrond[12766]: table for user root changed, reloading
Oct 5 23:25:51 maxserver incrond[12766]: (root) CMD (echo "$ /home/ test IN_MODIFY 2")
như các bạn đã thấy $@ thay bằng /home/ , $# thay bằng test, $% thay bằng IN_MODIFY , $& thay bằng 2
Thêm 1 ví dụ nữa để chúng ta hiểu thêm về incron
Tôi có 1 thư mục conf.d và mỗi khi thay đổi nó tôi muốn nó restart httpd ,Tôi sẽ đặt như sau
/etc/httpd/conf.d/ IN_MODIFY service restart httpd
Ta sẽ thay đổi bất kì gì trong thư mục conf.d ,và check log /var/log/cron để xem kết quả
Chạy lệnh Rsync
Ví dụ: Tôi muốn mỗi có 1 file đc thêm vào thư mục /var/www/html/upload/ thì nó sẽ tự động chạy lệnh rsync đồng bộ file đến một server khác ,
Ta gõ lệnh sau để thêm lệnh
# incrontab -e
Rồi nhập nội dung như sau
/var/www/html/upload/ IN_CLOSE_WRITE,IN_CREATE,IN_DELETE /usr/bin/rsync --exclude ’*.tmp’ -a /var/www/html/upload/ root@localhost:/var/www/html/upload/
Nếu gặp vấn đề sự cố gì các bạn có thể check log của nó
# tail -f /var/log/cron
Article ID: 163
Created: Sun, Apr 14, 2019
Last Updated: Sun, Apr 14, 2019
Author: admin
Online URL: https://huongdan.maxserver.com/article-163.html