Crontab trong Linux: Cách tạo và quản lý Cron Jobs
Trong bài này chúng ta sẽ tìm hiểu cách tạo Cron Job bằng cách sử dụng lệnh crontab trong Linux, đây là công cụ giúp ta hẹn giờ chạy một chương trình nào đó trong Linux và nó sẽ chạy ngầm trên server.
Trong quá trình xây dựng các ứng dụng trên Linux Server, chắc chắn bạn sẽ gặp một cố trường hợp cần thực thi một đoạn code nào đó trong một thời điểm nào đó, lúc này ta cần phải sử dụng công cụ cron thông qua lệnh crontab.
1. Cron là gì?
Cron là một công cụ (tool) hữu ích của Linux, và là công cụ yêu thích của các nhà phát triển vì nó cho phép bạn chạy các lệnh tự động vào các khoảng thời gian, ngày tháng cụ thể nào đó. Với công cụ này thì các nhà quản trị Linux sử dụng nó để tự động hóa các tác vụ sao lưu, dọn dẹp thư mục, thông báo ..
Crontab (cron table) là một file chứa lịch trình (schedule) của các mục cron (entries) sẽ được chạy và vào những thời điểm cụ thể. Vị trí của các file này khác nhau tùy theo mỗi hệ điều hành.
Bài viết này được đăng tại [free tuts .net]
Bạn không thể chỉnh sửa trực tiếp trên file cron mà phải thông qua lệnh crontab. Mỗi người dùng sẽ có một cron schedule riêng, và thường nó sẽ nằm trong thư mục /var/spool/cron/
.
Cron Jobs (cron schedule) là một tập hợp các lệnh sẽ thực thi theo một thời điểm cụ thể nào đó (hay còn gọi là lịch trình). Mỗi crontab có thể có nhiều câu lệnh thực thi.
Cron Jobs sẽ chạy ngầm và liên tục kiểm tra các file cron schedule nằm trong thư mục /etc/crontab
, và các thư mục /etc/cron.*/
và /var/spool/cron/
, nếu có cron nào đến thời gian cần chạy thì sẽ được thực thi.
2. Cú pháp crontab trong Linux
Lệnh tạo hoặc chỉnh sửa cron job là giống nhau và khá đơn giản, bạn chỉ cần chạy lệnh sau để khởi động:
$ crontab -e
Sau đó sử dụng cú pháp dưới đây để tạo ra các lịch trình (schedule): Trong cú pháp này mình đã cung cấp hai trường hợp khác nhau.
A B C D E USERNAME /path/to/command arg1 arg2 OR A B C D E USERNAME /root/backup.sh
Giải thích các thông số trong lệnh trên như sau:
- A là số phút: 0 – 59
- B là số giờ: 0 – 23
- C là ngày trong tháng: 0 – 31
- D là tháng trong năm: 0 – 12
- E là ngày trong tuần: 0 – 7. bắt đầu từ thứ 2, và số 0 hoặc 7 đại diện cho ngày chủ nhật
- USERNAME: Tên người dùng
- /path/to/command – tên của tập lệnh hoặc lệnh bạn muốn lập lịch trình
Ngoài ra, cron cho phép bạn sở dụng các toán tử dưới đây để tạo ra nhiều giá trị cho mỗi thông số.
- Dấu sao (*): chỉ định mọi giá trị trong phạm vi của nó.
- Dấu phẩy (,): danh sách các giá trị
- Dấu gạch ngang (-): phạm vi các giá trị
- Dấu cách chéo (/): giá trị theo bước nhảy
Bây giờ thì bạn đã biết cú pháp tạo một cron job rồi đấy, nghe có vẻ khó hiểu nên ta sẽ làm một vài ví dụ để bạn dễ hiểu hơn nhé.
3. Cách tạo các cron job trong Linux
1. Đầu tiên bạn cần chạy lệnh # crontab -e
để khởi động crontab.
# crontab -e
Sau đó bạn có thể tạo ra những lịch trình khác nhau, giả sử mình sẽ tạo thông qua các yêu cầu như sau.
2. Chạy script /root/backup.sh
vào 3 giờ sáng mỗi ngày.
0 3 * * * /root/backup.sh
3. Chạy script.sh
vào 4h30 chiều vào ngày mùng 2 mỗi tháng.
30 16 2 * * /path/to/script.sh
4. Chạy /scripts/phpscript.php
vào 10h tối chủ nhật
0 22 * * 0,7 /scripts/phpscript.php
5. Chạy perlscript.pl
vào phút thứ 23 lúc giữa đêm (0h), 2h sáng và 4h sáng của mọi ngày.
23 0,2,4 * * * /path/to/perlscript.pl Hoặc 23 0-4/2 * * * /path/to/perlscript.pl
4. Một số chuỗi từ khóa contab đặc biệt
Crontab cho phép bạn lên lịch trình ngắn gọn bằng cách sử dụng các chuỗi đặc biệt dưới đây.
@reboot Chạy một lần mỗi khi khởi động lại @yearly Chạy một lần mỗi năm "0 0 1 1 *" @annually (Tương tự @yearly) @monthly Chạy mỗi tháng một lần "0 0 1 * *" @weekly Chạy mỗi tuần một lần "0 0 * * 0" @daily Chạy một lần mỗi ngày "0 0 * * *" @midnight (Tương tự @daily) @hourly Chạy một lần mỗi giờ "0 * * * *"
Ví dụ: Chạy mỗi ngày một lần vào lúc 0h sáng.
@daily /bin/execute/this/script.sh
Chạy mỗi khi khởi động lại vps / server.
@reboot /bin/execute/this/script.sh
5. Nối nhiều lệnh chạy cho một lịch trình
Trong ví dụ dưới đây thì command1 và command2 sẽ được chạy hàng ngày.
# crontab -e @daily <command1> && <command2>
6. Một số tham số của crontab
Ở trên chúng ta đã sử dụng tham số -e để tạo hoặc chỉnh sửa các cron job, vẫn còn rất nhiều tùy chọn nữa như sau.
Xem danh sách các cron job.
# crontab -l OR # crontab -u username -l
Xóa tất cả cron job.
# crontab -r
Xó cron job của một user nào đó.
# crontab -r -u username
Trên là cách sử dụng crontab trong Linux. Qua bài này sẽ giúp bạn hiểu được khái niệm cron là gì? crontab là gì? cron job là gì? Cũng như phân biệt được ba khái niệm đó.
Ngoài ra bạn cũng biết cách tạo một cron job đơn giản bằng cách sử dụng lệnh crontab trong Linux. Chúc bạn thành công!