Crontab trong Linux: VÍ DỤ Lập lịch công việc
crontab là gì?
Cron được đặt tên theo từ tiếng Hy Lạp “Chronos” được sử dụng cho thời gian. Đó là một quy trình hệ thống sẽ tự động thực hiện các nhiệm vụ theo lịch trình cụ thể. Nó là một tập hợp các lệnh được sử dụng để chạy các tác vụ lập kế hoạch thông thường. Crontab là viết tắt của “bảng cron”. Nó cho phép sử dụng bộ lập lịch công việc, được gọi là cron để thực thi các tác vụ.
Crontab cũng là tên của chương trình, dùng để chỉnh sửa lịch trình đó. Nó được điều khiển bởi một tệp crontab, một tệp cấu hình cho biết các lệnh shell sẽ chạy định kỳ theo lịch trình cụ thể.
Tại sao nên sử dụng Cronjob?
Dưới đây là những lý do nên sử dụng Cronjobs trong Linux:
- Giúp hệ điều hành thực hiện sao lưu theo lịch trình các tệp nhật ký hoặc cơ sở dữ liệu.
- Xóa các tập tin nhật ký cũ
- Archive và xóa các bảng cơ sở dữ liệu
- Gửi bất kỳ email thông báo nào như Bản tin, email hết hạn mật khẩu
- Thường xuyên dọn dẹp dữ liệu được lưu trong bộ nhớ đệm
- Crontab là một lựa chọn lý tưởng để tự động hóa các công việc Unix.
- Nó được sử dụng để tự động bảo trì hệ thống
Làm cách nào để sử dụng cron trong Linux?
Hệ thống Linux pack có một công cụ lập lịch tác vụ hữu ích tên là crontab. Crontab phổ biến vì nó có thể được lên lịch để chạy một quy trình tự động dưới quyền root. Do đó, việc có một quy trình tự động chạy bằng quyền root sẽ giúp việc thay đổi hệ thống trở nên dễ dàng hơn. Bạn chỉ cần thay đổi nhiệm vụ và đợi cho đến khi nhiệm vụ được bắt đầu lại.
Định dạng Crontab của Linux
Crontab của Linux có sáu trường. Năm trường đầu tiên xác định ngày và giờ thực hiện và trường thứ 6 được sử dụng để thực thi lệnh.
Cú pháp crontab:
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
- Astrics (*): Sử dụng để kết hợp
- Xác định phạm vi: Cho phép bạn xác định phạm vi với sự trợ giúp của dấu gạch nối như 1-10 hoặc 30-40 hoặc jan-mar, mon-wed.
- Xác định nhiều phạm vi: Cho phép bạn xác định các phạm vi khác nhau bằng lệnh được phân tách như apr-jun,oct-dec.
Cách thêm/sửa đổi Crontab
Người dùng có thể chỉnh sửa công việc crontab của mình bằng lệnh crontab sau:
$ crontab -u -e
Lệnh trên sẽ mở cấu hình crontab cá nhân của hệ thống máy tính của bạn, cấu hình này có thể được chỉnh sửa bằng cách sử dụng trình soạn thảo văn bản mặc định của bạn.
Không cần phải khởi động lại crontab vì nó sẽ tự động ghi nhận những thay đổi của bạn khi bạn sử dụng lệnh sau.
$ crontab -l
Để xóa tác vụ crontab, hãy sử dụng lệnh sau.
$ crontab -r
Để thêm hoặc cập nhật công việc trong crontab, hãy sử dụng lệnh bên dưới.
crontab -e
Lệnh chỉnh sửa crontab của người dùng khác
crontab -u username -e
Cách liệt kê Crontab
Lệnh xem các mục crontab của người dùng hiện tại
crontab -l
Lệnh xem các mục crontab của một người dùng cụ thể:
crontab -u username -l
Các ví dụ quan trọng về Crontab
Dưới đây là một số ví dụ quan trọng của Crontab
| Mô tả Chi tiết | Lệnh |
|---|---|
| Lệnh Cron để thực hiện các công việc lập kế hoạch khác nhau. Lệnh dưới đây thực hiện vào lúc 7 giờ sáng và 5 giờ chiều hàng ngày. |
0 7,17 * * * /scripts/script.sh |
| Lệnh thực hiện cron sau mỗi 5 phút. |
*/5* * * * * /scripts/script.sh |
| Lệnh lập lịch Cron giúp bạn thực hiện tác vụ trên mọi Monday lúc 5 giờ sáng. Lệnh này hữu ích để thực hiện các tác vụ hàng tuần như dọn dẹp hệ thống. |
0 5 * * mon /scripts/script.sh |
| Lệnh chạy tập lệnh của bạn trong khoảng thời gian 3 phút. |
*/3 * * * * /scripts/monitor.sh |
| Lệnh lên lịch cho một cron thực thi trong một tháng cụ thể. Lệnh này để chạy các tác vụ chạy trong tháng 2, tháng 6 và tháng 9. Đôi khi chúng ta cần lên lịch một tác vụ để thực hiện một tác vụ hàng tháng được chọn. |
* * * feb,jun,sep * /script/script.sh |
| Lệnh thực hiện vào những ngày đã chọn. Ví dụ này sẽ chạy từng Monday và Thứ Tư lúc 5 giờ chiều. |
0 17 * * mon,wed /script/script.sh |
| Lệnh này cho phép cron thực thi vào thứ bảy đầu tiên hàng tháng. |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
| Lệnh chạy tập lệnh trong khoảng thời gian 6 giờ để có thể định cấu hình tập lệnh như bên dưới. |
0 */6 * * * /scripts/script.sh |
| Lệnh này lên lịch một tác vụ để thực thi hai lần vào Monday và thứ Ba. Sử dụng các thiết lập sau để thực hiện. |
0 4,17 * * mon,tue /scripts/script.sh |
| Lệnh lên lịch cho cron thực thi sau mỗi 15 giây. |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
| Lệnh lập kế hoạch nhiệm vụ hàng năm. Dấu thời gian @yearly là= đến “0 0 5 1 *”. Điều này thực hiện nhiệm vụ vào phút thứ năm hàng năm. Bạn có thể sử dụng nó để gửi lời chúc mừng năm mới. |
@yearly /scripts/script.sh |
| Nhiệm vụ lệnh thực hiện hàng tháng. Dấu thời gian @monthly tương tự như “0 0 1 * *”. Biểu thức lệnh này cho phép thực hiện một tác vụ vào phút đầu tiên của tháng. |
@monthly /scripts/script.sh |
| Lệnh thực thi nhiều tác vụ bằng một cron. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
| Lệnh lên lịch các nhiệm vụ để thực hiện hàng tuần. Dấu thời gian @weekly tương tự như “0 0 4 * sun”. Điều này được sử dụng để thực hiện các tác vụ hàng tuần như dọn dẹp hệ thống, v.v. |
@weekly /bin/script.sh |
| Nhiệm vụ sẽ được lên kế hoạch thực hiện hàng ngày. Dấu thời gian @daily tương tự như “0 2 * * *”. Nó thực hiện nhiệm vụ vào phút thứ hai mỗi ngày. |
@daily /scripts/script.sh |
| Cho phép các nhiệm vụ được thực hiện hàng giờ. Dấu thời gian @hourly tương tự như “0 * * * *”. Lệnh này thực thi một tác vụ vào phút đầu tiên của mỗi giờ. |
@hourly /scripts/script.sh |
| Cho phép thực thi các tác vụ khi khởi động lại hệ thống. Biểu thức @reboot rất hữu ích cho những tác vụ mà hệ thống muốn chạy khi khởi động hệ thống của bạn. Điều này rất hữu ích để bắt đầu nhiệm vụ ở chế độ nền tự động. |
@reboot /scripts/script.sh |
Tóm tắt:
- Cron được đặt tên theo từ tiếng Hy Lạp “Chronos” được sử dụng cho thời gian.
- Cronjobs giúp hệ điều hành sao lưu theo lịch trình các tệp nhật ký hoặc cơ sở dữ liệu.
- Gói hệ thống Linux có một bộ lập lịch tác vụ hữu ích tên là crontab, có thể được lên lịch để chạy một quy trình tự động với quyền root.
- Crontab của Linux có sáu trường. Năm trường đầu tiên xác định ngày và giờ thực hiện và trường thứ 6 được sử dụng để thực thi lệnh.

