Crontab là một công cụ thực thi theo lịch trình thường được sử dụng trong các hệ thống Unix/Linux, có thể chạy các công việc được chỉ định mà không cần can thiệp thủ công. Nhiều khi chúng ta phải sử dụng lệnh Crontab. Ví dụ: tập lệnh acme.sh được đề cập trong chứng chỉ SSL tên miền miễn phí Let’s Encrypt Wildcard sử dụng tác vụ theo lịch trình của Crontab để cập nhật chứng chỉ SSL.

Thông qua lệnh crontab, chúng ta có thể thực thi các hướng dẫn hệ thống hoặc tập lệnh shell được chỉ định theo các khoảng thời gian cố định. Khi VPS Linux gắn kết Google Drive và Dropbox, chúng ta có thể sử dụng lệnh Crontab để thực hiện sao lưu đồng bộ hóa theo lịch trình và sử dụng Crontab để khởi động lại VPS và máy chủ thường xuyên. mỗi ngày hoặc các dịch vụ Nginx, PHP, Mysql, v.v.

Tóm lại, việc nắm vững cú pháp lệnh Crontab cơ bản là rất cần thiết để chúng ta quản lý các máy chủ VPS của riêng mình. Bài viết này giải thích cách sử dụng lệnh Crontab của Linux thông qua các ví dụ mà không cần đi sâu tìm hiểu. Mục đích chủ yếu là để tạo điều kiện truy vấn và tham khảo nhanh chóng. trong tương lai.

Hướng dẫn vận hành và cú pháp cơ bản lệnh Crontab của Linux Crontab-Vận hành tự động hóa VPS/máy chủ

Để biết thêm các lệnh và ứng dụng liên quan đến lưu trữ VPS, bạn có thể xem:

  1. Tổng hợp các lệnh giám sát hệ thống Linux - CPU chủ, bộ nhớ, IO đĩa, v.v. để tìm ra các tắc nghẽn về hiệu suất
  2. Ba công cụ lệnh Rsync, SCP và Tar-quick giải pháp di chuyển trang web và đồng bộ hóa dữ liệu từ xa VPS
  3. Ba cách để chia sẻ thư mục thư mục trong Linux - Gắn từ xa NFS, lưu trữ chia sẻ GlusterFS và thư mục chia sẻ samba

1. Crontab xem và chỉnh sửa khởi động lại

1. Xem danh sách tác vụ thực thi theo lịch trình crontab

crontab -l

2. Chỉnh sửa crontab để thực thi tác vụ thường xuyên

crontab -e

3. Xóa tác vụ đã lên lịch của crontab

crontab -r

4. Các lệnh liên quan:

sudo service crond start     #启动服务
sudo service crond stop      #关闭服务
sudo service crond restart   #重启服务
sudo service crond reload    #重新载入配置
sudo service crond status    #查看服务状态

2. Cú pháp định dạng cơ bản của Crontab

Biểu thức thời gian của crontab:

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

Trước tiên hãy xem một ví dụ. Thực hiện chương trình sao lưu vào lúc 1 giờ sáng hàng ngày: 0 1 * * * /root/wzfou.com/backup.sh. Trong số đó, /root/wzfou.com/backup.sh là đường dẫn tập lệnh. Để sử dụng đường dẫn tuyệt đối, vui lòng xem hình bên dưới để biết định dạng ngày trước đó.

Trường hợp 1: được thực thi cứ sau 1 phút

* * * * * /root/wzfou.com/backup.sh

Trường hợp 2: Thực hiện mỗi giờ một lần vào phút thứ 3 và 15

3,15 * * * * /root/wzfou.com/backup.sh

Instance 3: Thực hiện mỗi ngày 1 lần từ 8h đến 11h vào phút thứ 3 và 15

3,15 8-11 * * * /root/wzfou.com/backup.sh

Trường hợp 4: Thực hiện hai ngày một lần vào phút thứ 3 và phút thứ 15 từ 8h đến 11h

3,15 8-11 */2  *  * /root/wzfou.com/backup.sh

Instance 5: Thực hiện 1 lần vào thứ Hai hàng tuần vào phút thứ 3 và 15 từ 8h đến 11h

3,15 8-11 * * 1 /root/wzfou.com/backup.sh

Ví dụ 6:Thực hiện 1 lần mỗi tối lúc 21h30

30 21 * * * /root/wzfou.com/backup.sh

Instance 7: Thực hiện mỗi tháng một lần vào lúc 4h45 các ngày 1, 10 và 22

45 4 1,10,22 * * /root/wzfou.com/backup.sh

Ví dụ 8:Thực hiện 1 lần thứ bảy và chủ nhật lúc 1:10

10 1 * * 6,0 /root/wzfou.com/backup.sh

Ví dụ 9: Thực hiện 30 phút một lần trong khoảng thời gian từ 18:00 đến 23:00 hàng ngày

0,30 18-23 * * * /root/wzfou.com/backup.sh

Vụ 10: Thực hiện vào lúc 23h00 thứ bảy hàng tuần

0 23 * * 6 /root/wzfou.com/backup.sh

Ví dụ 11:Thực hiện mỗi giờ một lần

* */1 * * * /root/wzfou.com/backup.sh

Ví dụ 12:Thực hiện mỗi giờ từ 23:00 hàng đêm đến 7:00 ngày hôm sau

* 23-7/1 * * * /root/wzfou.com/backup.sh

Ví dụ 13: được thực thi một lần vào ngày đầu tiên mỗi tuần (tức là bắt đầu vào lúc 24h00 tối Chủ Nhật hàng tuần).

@weekly /root/wzfou.com/backup.sh

Ví dụ 14:Thực hiện 1 lần vào ngày 15 hàng tháng.

0 11 15 * * /root/wzfou.com/backup.sh

Trường hợp 15: được thực thi một lần vào ngày đầu tiên mỗi tháng (nghĩa là bắt đầu lúc 0 giờ sáng ngày 1 hàng tháng).

@monthly /root/wzfou.com/backup.sh

Trường hợp 16: được thực thi một lần trong tháng được chỉ định (được thực thi mỗi đêm một lần vào lúc 0:00 trong tháng 1, tháng 4 và tháng 6).

0 0 * jan,apr,jun * /root/wzfou.com/backup.sh

Trường hợp 17: Thực thi một lần sau khi khởi động lại.

@reboot /root/wzfou.com/backup.sh

Ví dụ 18:Gửi thông báo qua email sau khi tác vụ đã lên lịch được thực thi.

MAILTO="raj"
1 1 * * * /root/wzfou.com/backup.sh

Ví dụ 19: Chỉ định shell (mặc định là /bin/bash)

SHELL=/bin/sh
1 1 * * * /root/wzfou.com/backup.sh

Trường hợp 20: chỉ định các biến môi trường.

PATH=/sbin:/bin:/usr/sbin:/usr/bin 
1 1 * * * /root/wzfou.com/backup.sh

4. Các vấn đề có thể xảy ra với Crontab

4.1  Crontab không có hiệu lực ngay lập tức

Tác vụ theo lịch trình Crontab mới tạo của bạn sẽ phải đợi 2 phút trước khi nó được thực thi sau khi lưu nó. Tất nhiên, nếu bạn muốn thực thi nó ngay lập tức, bạn có thể khởi động lại Crontab. Khi crontab bị lỗi, bạn có thể thử /etc/init.d/crond restart để giải quyết sự cố hoặc kiểm tra nhật ký để xem liệu một tác vụ nhất định có được thực thi/lỗi được báo cáo tail -f /var/log/cron.

4.2  Crontab không thực thi

Khi đường dẫn tệp có liên quan đến tập lệnh, hãy ghi đường dẫn chung. Sau khi cập nhật thời gian và múi giờ của hệ thống, cron cần được khởi động lại. Khi việc thực thi thủ công tập lệnh vẫn ổn, nhưng crontab không thực thi, rất có thể đó là biến môi trường. Bạn có thể thử đưa trực tiếp biến môi trường vào crontab để giải quyết vấn đề, ví dụ:

0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh

4.3  Crontab không có quyền thực thi

Hãy chú ý đến việc lập lịch tác vụ ở cấp hệ thống và lập lịch tác vụ ở cấp độ người dùng. Chỉ người dùng root và chủ sở hữu của tệp crontab mới có thể chạy -e, -l, -r- v< Sử dụng UserName sau cờ ept4> để chỉnh sửa, liệt kê, xóa hoặc xác minh tệp crontab cho một người dùng được chỉ định.

Hoạt động lập lịch tác vụ của người dùng root có thể được đặt thông qua "crontab -uroot -e" hoặc các tác vụ đã lên lịch có thể được ghi trực tiếp vào tệp /etc/crontab.

Để chỉnh sửa crontab của người dùng khác, hãy chạy lệnh sau với quyền root. Định dạng tương tự (thêm "-u tên người dùng" vào cuối lệnh) cũng có thể được sử dụng để liệt kê hoặc xóa crontab.

 crontab -u username -e

4.4  Thông báo sau khi thực thi Crontab

Khi tác vụ theo lịch trình của Crontab được thực thi vào thời điểm bạn chỉ định, hệ thống sẽ gửi cho bạn một lá thư hiển thị nội dung thực thi của chương trình, có thể xem trong nhật ký /var/log/cron. Nếu bạn không muốn nhận thông báo như vậy, vui lòng thêm > /dev/null 2>&1 sau dấu cách ở mỗi dòng.

Để lại một câu trả lời