Những lệnh crontab thường 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

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

ScheduleDescriptionFormat
yearlyRun once a year at midnight of 1 January0 0 1 1 *
monthlyRun once a month at midnight of the first day of the month0 0 1 * *
weeklyRun once a week at midnight on Sunday morning0 0 * * 0
dailyRun once a day at midnight0 0 * * *
hourlyRun once an hour at the beginning of the hour0 * * * *

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


Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.
I love PHP, NodeJS, Java,... and Fullstack.