Add jobs vào crond service trên Linux or Unix

0
3930

Add jobs vào crond service trên Linux or Unix

Cron-Job-1

  •  Giới thiệu :

Cron jobs thường dùng để lên lịch thực thi các command  theo một chu kỳ nào đó. Có thể lập lịch cho Commands hoặc là Scripts. Cron là một trong những tool khá phổ biến trên Linux, Unix. Cron service thường xuyên check /etc/crontab file, và /etc/cron.*/ thư mục, và cuối cùng là thư mục /var/spool/cron/
[sociallocker]

  • crontab command :

Command này dùng để install hoặc deinstall cron jobs từ file config cron của user tương ứng. Mỗi user sẽ có một file cấu hình cron tương ứng và được đặt ở /var/spool/cron/user . Và những file này mình phải edit bằng command crontab chứ không edit trực tiếp được.

  • Types of cron configuration files :

Chúng ta sẽ phân biệt sự các nhau giữa các Loại cron configuration files.

  1. The Unix/ Linux system crontab : Thường được sử dụng cho các dịch vụ hệ thống và các Jobs quan trọng cần thực thi dưới quyền root. Trường thứ 6 của job này chính là user mà mình muốn run command. System crontab có thể chạy dưới bất kỳ user nào.
  2. The user crontab : User tự tạo jobs riêng cho chính nó bằng command crontab. Trường thứ 6 của job bây giờ không phải là tên User như loại ở trên nữa mà nó là command. Tất cả command đều được thực thi dưới quyền của user tạo crontab đó.
  • Syntax of crontab :

Cú pháp như sau :

[code lang=”js”]

1 2 3 4 5 /path/to/command arg1 arg2

OR

1 2 3 4 5 /root/backup-databases.sh

[/code]

Với,

  • 1: Minute (0-59)
  • 2: Hours (0-23)
  • 3: Day (0-31)
  • 4: Month (0-12 [12 == December])
  • 5: Day of the week(0-7 [7 or 0 == sunday])
  • /path/to/command – Script or command name to schedule

Các bạn củng có thể dựa vào mô hình như sau để dễ nhớ hơn

[code lang=”js”]

* * * * * command to be executed
– – – – –
| | | | |
| | | | —– Day of week (0 – 7) (Sunday=0 or 7)
| | | ——- Month (1 – 12)
| | ——— Day of month (1 – 31)
| ———– Hour (0 – 23)
————- Minute (0 – 59)

[/code]

  • Add, Remove, Edit Cron Jobs như sau.

Sử dụng crontab command để Add, Remove, Edit Cron nhé.

[code lang=”js”]

## Command để Add, Remove, Edit Cron là ##

# crontab -e          ## Khi bạn ghỏ command crontab như vậy có nghĩa là đang set cron cho User Root. nếu các bạn muốn setup cron cho user khác thì ghỏ crontab -u user -e

## Các bạn thêm cronjob sau vào ##

* * * * * echo "OK !!!" >> /root/test-cronjob.txt

## Sau đó lưu lại. Cron trên là mình cấu hình mỗi phút chạy 1 lần.

## Kiểm tra bằng lệnh. ##

# crontab -l

## Ngồi chờ tí nó tạo cái file test-cronjob ở thư mục root là ok.

# crontab -r ## Xóa cronjob for root.
# crontab -r -u username ## Xóa cronjob theo user bất kỳ.

[/code]

Bất kể command nào củng vậy phải qua sử dụng tìm tòi nhiều thì mình mới control tốt được. Cho nên ở đây mình chỉ nêu ra một số ví dụ cho các bạn hiểu cách sử dụng và những cách lập lịch chạy command đơn giản. Còn theo nhu cầu riêng thì các bạn chịu khó tìm hiểu nhé.

Các cronjob đơn giản.

[code lang=”js”]

## 5 phút chạy script backup một lần ##

*/5 * * * * /root/backupscript.sh

## Chạy backup hằng ngày vào lúc 1h sáng. ##

0 1 * * * /root/backupscript.sh

## Chạy backup vào lúc 3:15 sáng vào đầu mỗi tháng  ##

15 3 1 * * /root/backupscript.sh

## Chạy backup script vào 2h sáng những ngày trong tuần. ##

0 2 * * 1-5 /root/backupscript.sh

### Ok, Vài cron phổ biến như trên, các bạn tự phát triển tiếp nhé.

[/code]

  • Các toán tử sử dụng trong crontab :
  1.  The asterisk (*) : Đây là một toán tử đặt biệt. nó đại diện cho tất cả các giá trị của trường đó. Ví dụ ở trường phút là dấu * thì có nghĩa là từng phút. hoặc * ở trường hour thì có nghĩa là mỗi giờ.
  2. The comma (,) :  Dùng để tạo nên một list các giá trị, ví dụ : “1,3,5,7”
  3. The dash (-) : Dùng để chỉ một range ( dãy ) giá trị ví dụ như : “1-5” weekdays
  4. The separator (/) :  Dùng để mô tả giá trị kế tiếp. ví dụ như cứ sau mỗi 2 tiếng chạy một lần  thì */2
  • Disable mail output :

Mặt định khi một command hay script thực thi thì output của nó sẽ được gửi cho mail local. Để off cái này thì mình thêm vào cronjob >/dev/null 2>&1   [ Mình sẽ giải thích ở bài khác ]

[code lang=”js”]

0 0 * * * /root/backupscript.sh >/dev/null 2>&1

## Nếu các bạn muốn gửi mail tới một mail cụ thể mà mình muốn ví dụ [email protected] , Thì cấu hình như sau ##

MAILTO="[email protected]"

0 0 * * * /root/backupscript.sh >/dev/null 2>&1

[/code]

  • Use special string to save time :

Thay vì dùng 5 trường để định nghĩa lịch chạy script or command, ở đây chúng ta có một số special string như sau.

Special string Meaning
@reboot Run once, at startup.
@yearly Run once a year, “0 0 1 1 *”.
@annually (same as @yearly)
@monthly Run once a month, “0 0 1 * *”.
@weekly Run once a week, “0 0 * * 0”.
@daily Run once a day, “0 0 * * *”.
@midnight (same as @daily)
@hourly Run once an hour, “0 * * * *”.

Ví dụ như chạy backup mỗi ngày.

[code lang=”js”]

@daily /root/backupscript.sh

[/code]

  • /etc/crontab file và /etc/cron.d/*  directories :

File /etc/crontab là system crontab file. Thường được sử dụng bởi User Root và các Daemons hệ thống để cấu hình những jobs có tầm ảnh hưởng tới toàn hệ thống.

_  File /etc/crontab có nội dung như sau.

[code lang=”js”]

[root@vps ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

# run-parts
01 * * * * root run-parts /etc/cron.hourly

[/code]

Các dòng đầu tiên là Định nghĩa các biến môi trường, nếu SHELL không được định nghĩa nó sẽ lấy mặt định là sh. PATH không được định nghĩa thì nó củng không có giá trị mặt định lúc này các file cần phải được khai báo với đường dẫn tuyệt đối. Còn HOME nếu không được khai báo nó sẽ lấy Home User ở trong crontab ở trường thứ 6.

_  Còn lại, cron sẽ đọc các file trong thư mục /etc/cron.d/*  . cái run-parts ở trong file /etc/crontab sẽ thực thi các file hoặc chương trình đặt trong các thư mục /etc/cron.d/*

Directory Description
/etc/cron.d/ Put all scripts here and call them from /etc/crontab file.
/etc/cron.daily/ Run all scripts once a day
/etc/cron.hourly/ Run all scripts once an hour
/etc/cron.monthly/ Run all scripts once a month
/etc/cron.weekly/ Run all scripts once a week

_ Để sử dụng các thư mục trên thì các bạn cứ đặt file script của mình vào thư mục tương ứng là được. Ví Dụ như 5 ngày chạy backup 1 lần. thì đặt script backup vào thư mục daily.

 

  • Cuối cùng là backup cronjob.

Các bạn sử dụng lệnh đơn giản như sau.

[code lang=”js”]

# crontab -l > /path/to/file

# crontab -u user -l > /path/to/file

[/code]

Còn rất nhiều điều thú vị với Cron Jobs, Các bạn cứ sử dụng rồi bàn luận với mình nhé. Bên trên là kiến thức mình vận dụng được, có thể sẽ không chính xác 100%. Chờ comment của các bạn 😀
[/sociallocker]

Bình luận qua Facebook

BÌNH LUẬN

Please enter your comment!
Please enter your name here