Thứ Sáu, 28 tháng 7, 2023

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.

Mục lục

  • 1. Cron là gì?
  • 2. Cú pháp crontab trong Linux
  • 3. Cách tạo các cron job trong Linux
  • 4. Một số chuỗi từ khóa contab đặc biệt
  • 5. Nối nhiều lệnh chạy cho một lịch trình
  • 6. Một số tham số của 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 [tranvanbinh.vn]

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:

1
$ 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.

1
2
3
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.

1
# 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.

1
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.

1
30 16 2 * * /path/to/script.sh

4. Chạy /scripts/phpscript.php vào 10h tối chủ nhật

1
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.

1
2
3
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.

1
2
3
4
5
6
7
8
@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.

1
@daily /bin/execute/this/script.sh

Chạy mỗi khi khởi động lại vps / server.

1
@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.

1
2
3
# 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.

1
2
3
# crontab -l
OR
# crontab -u username -l

Xóa tất cả cron job.

1
# crontab -r

Xó cron job của một user nào đó.

1
# 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!

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master