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.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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ạ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.*//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ố.

  1. Dấu sao (*): chỉ định mọi giá trị trong phạm vi của nó.
  2. Dấu phẩy (,): danh sách các giá trị
  3. Dấu gạch ngang (-): phạm vi các giá trị
  4. 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!

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top