Làm cách nào để thực thi một tác vụ với thời điểm được định trước trên linux?

0
165

Bạn cần tự động hóa một số công việc như sao lưu, tự động cập nhật hoặc đồng bộ các tập tin …Tương tự chức năng Task Schedule trên hệ điều hành Windows, Linux cung cấp dịch vụ cron để cho phép người dùng thực thi một ứng dụng với thời điểm được định sẵn. Hãy cùng oktot.com khám phá chức năng của dịch vụ cron.

Cron và Crontab

Cron là một dịch vụ được thiết kế để thực thi các tác vụ đã được lập lịch. Dịch vụ cron cứ một phút một lần định kỳ kiểm tra các tác vụ cần được thực thi chứa trong crontable. Crontab (Cron Table) là nơi chúng ta lên lịch các tác vụ cần thực thi. Mỗi một user có riêng một crontab. Mỗi người dùng có thể tự tạo, chỉnh sửa hoặc xóa crontab của chính mình.

Tập tin crontab bao gồm nhiều dòng, mỗi dòng gồm 6 trường cách nhau bởi dấu khoảng trắng (space). Trong 5 trường đầu tiên là thời điểm để thực thi lệnh chứa trong trường số 6.

  • Trường số 1: phút, giá trị 0 – 59.
  • Trường số 2: giờ, giá trị 0 – 23.
  • Trường số 3: ngày trong 1 tháng, giá trị 1 – 31.
  • Trường số 4: tháng trong năm, giá trị 1 – 12, hoặc có thể sử dụng 3 chữ cái đầu tiên của tháng ví dụ như Jan, Feb, Mar…Dec.
  • Trường số 5: ngày trong tuần, giá trị 0 – 6 hoặc Sun-Sat.
  • Tác vụ thực thi.

Crontab Một số ví dụ

Ví dụ 01: Liệt kê các tác vụ đang có trong crontab

#crontab –l

00 10 * * * /bin/ls > /ls.txt

Ví dụ 02: Chỉnh sửa crontab

#crontab -e

Ví dụ 03: Liệt kê crontab của 1 người dùng

Liệt kê crontab của root

image002Ví dụ 04: Xóa bỏ toàn bộ crontab với cảnh báo

#crontab –r -i

Ví dụ 05: Đặt lịch cho một tác vụ

Cần thực hiện việc tìm các thư mục rỗng nằm trong /tmp và xóa vào lúc 12:30 am hằng ngày.

#crontab –e

30 0 * * * root find /tmp –type f –empty -delete

Ví dụ 06: Ý nghĩa của một số chuỗi đặc biệt

@reboot – tác vụ được thực hiện sau khi hệ thống khởi động lại.

@daily – tác vụ thực hiện một lần mỗi ngày – cũng có thể sử dụng @midnight.

@weekly – tác vụ thực hiện 1 tuần một lần.

@yearly – tác vụ thực hiện 1 năm một lần.

Chuỗi này được thay thế bằng 5 trường chỉ thời gian của 1 dòng trong crontab.

Ví dụ 07: Thực hiện cùng lúc hai tác vụ

#crontab –e

@daily <command1> && <command2>

Chúc các bạn thành công!

LEAVE A REPLY