Cách viết CRONTAB TRÊN LINUX.

Thảo luận trong 'ACM/Programming' bắt đầu bởi DiepNV88, 24/03/14, 10:03 AM.

  1. DiepNV88

    DiepNV88 Super Moderator Thành viên BQT

    Tham gia: 24/09/13, 03:09 AM
    Bài viết: 1,519
    Đã được thích: 326
    Điểm thành tích:
    83
    Hiện có thành viên trên diễn đàn đã mail với mình về cách đặt lịch cho shell trên linux chạy vào từng thời gian cụ thể.
    Chức năng này có thể xử lý bằng cách cài đặt thiết lập và viết mã cron script trên linux.
    Hiện nay mình cũng chưa tìm hiểu nhiều nên lập topic này muốn các bạn có kiến thức về cron cript chia sẻ.
    Mở đầu là bài viết khá hữu ích từ internet:

    GIT- Tính năng Cron trong Linux thực chất là 1 chế độ sắp xếp tự động các chương trình, ứng dụng và kích hoạt chúng tại 1 thời điểm nhất định trong hệ thống, tương tự với Task Scheduler của Windows.

    [​IMG]


    Tất cả những gì chúng ta cần làm tại đây là gán các chương trình cần thực thi tới file crontab của hệ thống và sử dụng cấu trúc lệnh phù hợp, cron sẽ tự động thực hiện các ứng dụng đó vào thời điểm đã được thiết lập sẵn trước đó. Do vậy, tính năng này rất phù hợp trong quá trình tự động sao lưu dữ liệu, bảo dưỡng hệ thống… và các công việc tương tự khác.


    Cài đặt crontab bằng yum


    yum install crontabs.noarch


    yum install vixie-cron ( sử dụng lệnh này nếu lệnh trên không hoạt động)
    Cron làm việc thế nào?
    Một cron schedule đơn giản là một text file. Mỗi người dùng có một cron schedule riêng, file này thường nằm ở /var/spool/cron. Crontab files không cho phép bạn tạo hoặc chỉnh sửa trực tiếp với bất kỳ trình text editor nào, trừ phi bạn dùng lệnh crontab. Một số lệnh thường dùng:


    crontab -e: tạo hoặc chỉnh sửa file crontab


    crontab -l: hiển thị file crontab


    crontab -r: xóa file crontab
    Cấu trúc của crontab
    Một crontab file có 5 trường xác định thời gian, cuối cùng là lệnh sẽ được chạy định kỳ, cấu trúc như sau:


    * * * * * command to be executed


    - - - - -


    | | | | |


    | | | | +—– day of week (0 – 6) (Sunday=0)


    | | | +——- month (1 – 12)


    | | +——— day of month (1 – 31)


    | +———– hour (0 – 23)


    +————- min (0 – 59)
    Nếu một cột được gán ký tự *, nó có nghĩa là tác vụ sau đó sẽ được chạy ở mọi giá trị cho cột đó.


    Ví dụ
    Giả sử một đoạn script backup database MySQL như sau:


    #!/bin/bash
    DB=db_gocit_bk_`date +%Y%m%d-%H%M`.sql


    /usr/bin/mysqldump -u root –password=’password_gocit’ –databases gocit -R > /backup/database/$DB
    gzip /backup/database/$DB
    Sau đó cho script này chạy định kỳ vào 4h sáng hàng ngày bằng cách tạo một file crontab như sau:


    # crontab -e


    0 4 * * * /bin/sh /backup/backup.sh >/dev/null
    Cuối cùng, nhớ kiểm tra dịch vụ cron daemon


    # /etc/init.d/crond status
    Nếu crontab chưa khởi động thì khởi động bằng lệnh


    # /etc/init.d/crond start


    # chkconfig crond on

    Nguồn: gocit.vn.
     
    Last edited by a moderator: 15/09/14, 02:09 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan