Crontab

Tự động thực hiện task trên Linux

Trình bày bởi QuangNV

before vacation

Trước kỳ nghỉ lễ

working late

Backup database lúc 1am hàng ngày

Dung lượng ổ cứng có vấn đề. Ghi log dung lượng ổ cứng 10 phút/lần

working hard

Hiển thị một dòng thông báo đáng yêu lúc 18:00 từ thứ Hai đến thứ Sáu

“Shut the f****** computer down and go home with your BEAR!”

scream

Nội dung

  • Cron và crontab command là gì?
  • Crontab format
  • Một số ví dụ

Cron và crontab là gì?

Cron là gì?

  • Daemon thực thi các job (a.k.a task) đã được lên lịch trong các file crontab
  • Load các user crontab file trong thư mục /var/spool/cron/crontabs
  • Load các system crontab file trong thư mục /etc/crontab và /etc/cron.d
  • Kích hoạt mỗi phút một lần, thực thi các job đã được thiết lập để chạy ở thời điểm hiện tại
  • Kiểm tra các thư mục crontab, load các file crontab thay đổi hoặc thêm mới

Crontab command gì?

  • Quản lý các file crontab
  • Mỗi user có một file crontab trong thư mục /var/spool/cron/crontabs
  • Các job trong file crontab của một user sẽ được thực thi với quyền của user đó

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Crontab format

Thực hiện mycommand vào lúc 01:30 mỗi sáng Chủ nhật

30 1 * * 0 /path/to/mycommand

Ngoài các giá trị cụ thể, mỗi cột thời gian còn chấp nhận các cách viết sau:

  1. "*": tất cả các giá trị có thể
  2. "-": khoảng giá trị, ví dụ "6-9"
  3. ",": liệt kê các giá trị, ví dụ "8-10,13-15,18"
  4. "/": bước nhảy, ví dụ "*/15 8-12/2 * * *"

Chú ý

Nếu cả cột ngày trong thángngày trong tuần đều được gán giá trị khác * thì job sẽ được thực hiện khi ngày hiện tại thỏa mãn ít nhất một trong 2 giá trị đó.

Ví dụ:

                            0 5 1,15 * 1 /path/to/mycommand
                            

mycommand sẽ được thực hiện lúc 5:00 vào các ngày 1 và 15 hàng tháng thứ Hai hàng tuần.

Các chuỗi đặc biệt

  1. @reboot: thực hiện mỗi khi khởi động
  2. @yearly: giống "0 0 1 1 *"
  3. @annually: giống "@yearly"
  4. @monthly: giống "0 0 1 * *"
  5. @weekly: giống "0 0 * * 0"
  6. @daily: giống "0 0 * * *"
  7. @midnight: giống "@daily"
  8. @hourly: giống "0 * * * *"

Links

Thank you.