Tìm hiểu về incron


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