1. Crontab trên linux
- Nếu linux chưa cài đặt crontab thì các bạn cài bằng lệnh sau
1 |
sudo apt-get install cron |
- Để chạy lệnh bất kỳ theo schedule các bạn cần sửa file crontab
1 |
vi /etc/crontab |
Nội dung file crontab
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # Muốn chạy lệnh gì theo thời gian thì ghi vào đây ví dụ: 0 6 * * * root /home/test.sh |
Giải thích về cách set thời gian
1 2 3 4 5 6 7 8 9 10 11 |
.---------------- 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 | | | | | * * * * * command to be executed Ví dụ 1: 10 2 30 1 * ls #chạy lệnh ls vào ngày 30 tháng 1 lúc 2 giờ 10 phút Ví dụ 2: 0 * * * * ls #chạy lệnh ls vào lúc 0 phút (mỗi 1 tiếng chạy 1 lần) |
- Mỗi lần sửa file crontab cần phải restart lại service cron
1 |
systemctl restart cron |
2. Chạy script python trong crontab
Nếu muốn chạy script python trong crontab thì cần dùng lệnh để di chuyển đến thư mục hiện thời của file python muốn chạy cho dù có dùng đường dẫn tuyệt đối
Ví dụ nếu ghi nội dung dưới đây vào file crontab thì script python sẽ không chạy
1 |
* 12 * * * python /home/test.py |
Mà cần ghi như sau:
1 |
* 12 * * * cd /home && python /home/test.py |