BÀI VIẾT

Hướng dẫn sử dụng Crontab trong Linux

3.9K
author Huỳnh Đình Hiếu - 2022-08-11 15:14:47 (GMT+7)

Giới thiệu

Crontab (CRON TABLE) là một tiện ích cho phép thực hiện các tác vụ một cách tự động theo định kỳ, ở chế độ nền của hệ thống. Crontab là một file chứa đựng bảng biểu của các mục được chạy.

Một crontab đơn giản là một text file. Mỗi người dùng có một crontab riêng, file này thường nằm ở /var/spool/cron mà service crond sẽ đọc và thực thi theo lịch.

Cài đặt Crontab

Trên Ubuntu/Debian.

bash (root)
sudo apt-get install cron

Sau khi cài đặt xong, chúng ta kiểm tra xem nó đã cài đặt thành công rồi hay chưa bằng lệnh:

bash (root)
service cron status

Trên CentOS/Red Hat Linux

bash (root)
yum install cronie

Sau khi cài đặt xong, chúng ta kiểm tra xem nó đã cài đặt thành công rồi hay chưa bằng lệnh:

bash (root)
service crond status

Cấu trúc của Crontab

Hình thức tiêu chuẩn cho một dòng Crontab như sau: crontab

Định dạng thời gian làm việc Crontab.

Năm trường đầu tiên trong lệnh đại diện cho các số xác định thời điểm và tần suất lệnh chạy. Một khoảng trắng phân tách từng vị trí, đại diện cho một giá trị cụ thể.

Lệnh hoặc script được chạy.

Phần tiếp theo chỉ định lệnh để thực thi. Nó đại diện cho thư mục và tên tệp chính xác của tập lệnh hoặc các lệnh bạn muốn cron hoàn thành.

Ví dụ như: /root/backup.sh

Cách lệnh Crontab

Mở tệp cấu hình Crontab người dùng hiện tại.

Để mở tệp cấu hình Crontab cho người dùng hiện tại chúng ta dùng lệnh sau:

bash (non-root)
crontab -e 

Chúng ta có thể thêm bất kỳ số lượng nhiệm vụ đã lên lịch nào, mỗi nhiệm vụ một dòng.

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Chỉnh sửa Crontab của người dùng khác.

Để chỉnh sửa Crontab của người dùng khác chúng ta dùng lệnh sau:

bash (non-root)
crontab -u username -e

Liệt kê Crontab.

Lệnh để xem các mục Crontab của người dùng hiện tại

bash (non-root)
crontab -l

Lệnh để xem các mục Crontab của một người dùng cụ thể:

bash (non-root)
crontab -u username -l

Xóa Crontab.

Để xóa Crontab chúng ta dùng lệnh sau:

bash (non-root)
crontab -r

Sử dụng ký tự đặc biệt.

Sử dụng dấu /

Chúng ta có thể sử dụng dấu / (gạch chéo) để chia chuỗi thời gian thành các bước. Để chạy lệnh cứ sau 15 phút:

*/15 * * * * /root/backup.sh

* có nghĩa là tất cả các giá trị và /15 có nghĩa là được tính và lặp lại sau 15 phút.

Sử dụng dấu -

Chúng ta sử dụng dấu - (gạch ngang) để chỉ một phạm vi.

Ví dụ chúng ta chỉ định chạy lệnh từ Thứ Hai - Thứ Sáu vào lúc 4h sáng.

0 4 * * 1-5 /root/backup.sh

Sử dụng dấu ,

Chúng ta sử dụng dấu , phẩy để chỉ định các trường hợp riêng lẻ.

0 4 * * 2,4 /root/backup.sh

Điều này sẽ chạy mã lúc 4 giờ sáng thứ Ba và thứ Năm.

Ví dụ Crontab

Khi cấu hình Crontab, chúng ta sử dụng dấu hoa thị để chỉ định tất cả các giá trị. Việc đặt một giá trị vào một trong các trường chỉ chạy lệnh trên giá trị đó.

Ví dụ 1: Lên lịch cho một công việc trong một thời gian cụ thể.

Sử dụng crontab chạy /home/123host/backup.sh vào 23h30 vào ngày 8 tháng 5.

30 23 * * 6 /home/123host/backup.sh

Giải thích:

  • 30: 30 Phút.
  • 23: 11h đêm.
  • 8: Ngày 8.
  • 5: Tháng 5.
  • *: Mỗi ngày trong tuần.

Ví dụ 2: Lên lịch cho một công việc chạy 2 lần một ngày.

Sử dụng crontab chạy /home/123host/backup.sh vào 5h30 và 22h30 hàng ngày.

30 5,22 * * * /home/123host/backup.sh

Giải thích:

  • 30: 30 Phút.
  • 5,22: 5h sáng và 10h đêm.
  • *: Mỗi ngày.
  • *: Hàng tháng.
  • *: Mỗi ngày trong tuần.

Ví dụ 3: Sắp xếp công việc vào các ngày trong tuần.

Sử dụng crontab chạy /home/123host/backup.sh vào 23h từ thứ 2 đến thứ 6.

0 23 * * 1-5 /home/123host/backup.sh

Giải thích:

  • 0: 0 Phút.
  • 23: 11h đêm.
  • *: Mỗi ngày.
  • *: Hàng tháng.
  • 1-5: Thứ 2, thứ 3, thứ 4, thứ 5, thứ 6.

Sử dụng crontab chạy /home/123host/backup.sh từ 8h đến 17h, từ thứ 2 đến thứ 6.

0 8-17 * * 1-5 /home/123host/backup.sh

Giải thích:

  • 0: 0 Phút.
  • 8-17: 8 giờ sáng, 9 giờ sáng, 10 giờ sáng, 11 giờ sáng, 12 giờ sáng, 1 giờ chiều, 2 giờ chiều, 3 giờ chiều, 4 giờ chiều, 5 giờ chiều.
  • *: Mỗi ngày.
  • *: Hàng tháng.
  • 1-5: Thứ 2, thứ 3, thứ 4, thứ 5,thứ 6.

Một số giá trị thời gian cho Crontab.

Từ khóa Tương đương
@yearly : 0 0 1 1 *
@monthly : 0 0 1 * *
@weekly : 0 0 * * 0
@daily : 0 0 * * *
@hourly : 0 * * * *
@reboot : chạy lúc khởi động.

Tạo một tác vụ chạy vào phút đầu tiên của năm

@yearly /home/123host/backup.sh

Tạo một tác vụ chạy vào phút đầu tiên của tháng

@monthly /home/123host/backup.sh

Tạo một tác vụ chạy vào phút đầu tiên của chủ nhật hàng tuần

@weekly /home/123host/backup.sh

Tạo một tác vụ chạy vào phút đầu tiên của ngày

@daily /home/123host/backup.sh

Tạo một tác vụ chạy vào phút đầu tiên của giờ

@hourly /home/123host/backup.sh

Tạo một tác vụ chạy khi khởi động lại

@reboot /home/123host/backup.sh

Tổng kết

Chúng ta đã kết thúc hướng dẫn sử dụng Crontab trong Linux. Hy vọng qua bài này sẽ giúp các bạn tạo và lên lịch các công việc định kỳ trên hệ thống của bạn.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh tạo một dãy số tăng dần trên Linux
Lệnh tạo một dãy số tăng dần trên Linux

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
Bình luận

Tính năng đang được phát triển

Đang tải bình luận