Những lệnh crontab thường dùng

Bài viết được sự cho phép của tác giả Lê Chí Dũng

Tổng quan

  • Định nghĩa:
    • Cron 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ế độ background của hệ thống
    • Crontab (cron tab) là một file chứa đựng các thông tin config của schedule của các task được chạy
  • Mục đích bài này:
    •  Sử dụng cron job để chạy background process trên Server
  Building Microservices Application - Phần 1: Sử dụng Netflix Eureka, Ribbon và Zuul
  Building Microservices Application - Phần 3: Xác thực API bằng Oauth 2.0

Crontab trên Server

Crontab (cron table)

  • Trên server Cron files được lưu trong thư mục /var/spool/cron, cấu trúc giống như trên các os unix-like khác.
  • Các lệnh dùng với crontab:
crontab -e: tạo hoặc chỉnh sửa file crontab
crontab -l: hiển thị file crontab
crontab -r: xóa file crontab
  • Nếu server chưa có crontab cần install:
# Install:
yum install cronie
# Start crontab và tự động chạy mỗi khi reboot:
systemctl start crond
chkconfig crond on
  • Cấu trúc:
* * * * * owner command to execute 1
* * * * * owner command to execute 2
* * * * * owner command to execute 3
  • Giải thích
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
│ │ │ │ │                                       7 is also Sunday)
│ │ │ │ │
│ │ │ │ │
* * * * * owner command to execute

Setup schedule for cron tab

Schedule Description Format
yearly Run once a year at midnight of 1 January 0 0 1 1 *
monthly Run once a month at midnight of the first day of the month 0 0 1 * *
weekly Run once a week at midnight on Sunday morning 0 0 * * 0
daily Run once a day at midnight 0 0 * * *
hourly Run once an hour at the beginning of the hour 0 * * * *

Example

# Run a task for every Friday at 17:01pm
1 17 * * 5 /var/cron/pkgtabs/shutdown_server_and_go_drinking
 
# Run db_export_dump at 23:45 (11:45 PM) every Saturday
45 23 * * 6 /var/cron/pkgtabs/db_export_dump
 
# Run task for every hours
0 * * * * /var/cron/pkgtabs/send_mail

Config crontab

Để crontab tự động chạy cần kích hoạt và cấu hình crontab như sau:

crontab -e
 
# Sau đó nhập nội dung
# Chạy cron đơn giản, repeat theo từng giờ
crontab 0 * * * * $(OWNER) /var/share/point_tool/task1.sh
  
# Chạy cron tab theo từng phút, đồng thời tại lock để tránh trường hợp task chạy chồng lên nhau (task xữ lý chưa hết thời gian thì task sau đến thời điểm chỉ định sẽ không được chạy
crontab * * * * * $(OWNER) /usr/bin/flock -n /var/point_tool/cron/task2.lockfile php /var/share/point_tool/task2.php --minutely >> /var/log/cron/task2.log

Trong đó

  • /usr/bin/flock -n /path/to/lockfile tạo file lock cho task, chống chạy nhiều task một lúc
  • –minuly lock task theo phút

Execute crontab

Có thể start crontab ở console như sau:

# Run a task for every Friday at 17:01pm
1 17 * * 5 /var/cron/pkgtabs/shutdown_server_and_go_drinking
 
# Run db_export_dump at 23:45 (11:45 PM) every Saturday
45 23 * * 6 /var/cron/pkgtabs/db_export_dump
 
# Run task for every hours
0 * * * * /var/cron/pkgtabs/send_mail
Bài viết gốc được đăng tải tại lcdung.top
Có thể bạn quan tâm:
Xem thêm Việc làm IT hấp dẫn trên TopDev