Cron Jobs: Hướng dẫn hoàn chỉnh cho người mới bắt đầu

Cron Jobs Complete Beginners Tutorial



Cron là tiện ích hữu ích nhất trong hệ điều hành giống như Linux hoặc UNIX, cho phép chạy các lệnh hoặc tập lệnh theo một lịch trình nhất định mà không cần bất kỳ sự can thiệp nào của người dùng. Các lệnh và tập lệnh đã lên lịch cũng được đặt tên là công việc cron. Nó chủ yếu được sử dụng để tự động hóa các công việc định kỳ như chạy sao lưu theo lịch trình, dọn dẹp tệp tạm thời, bảo trì hệ thống và nhiều công việc định kỳ khác. Nó tương tự như Task Scheduler trong Windows OS.

Trong hướng dẫn này, chúng tôi sẽ cung cấp cho bạn phần giới thiệu cơ bản về mọi thứ bạn cần hiểu để lên lịch công việc với cron. Điều này bao gồm cú pháp cơ bản của cron, chỉnh sửa tệp crontab, lập lịch công việc với cron với một vài ví dụ, xem công việc cron, v.v.







Khái niệm cơ bản về Cron Job

Chúng ta hãy hiểu một số điều cơ bản về công việc cron.



Crond là gì?

Crond là daemon trong hệ thống Linux chạy ngầm và kiểm tra mỗi phút để xem có công việc nào được lên lịch vào thời điểm đó hay không. Nếu có, nó thực hiện công việc đó, nếu không, nó vẫn không hoạt động.



Cú pháp công việc Cron

Cú pháp cho cron job như sau:





* * * * *chỉ huy/kịch bản

Từ bên trái:

  • Dấu * đầu tiên tương ứng với Phút (0-59)
  • Dấu * thứ hai tương ứng với Giờ (0-23)
  • Dấu * thứ ba tương ứng với Ngày trong tháng (1-31)
  • Dấu * thứ tư tương ứng với Tháng trong năm (1-12)
  • * Thứ năm tương ứng với Ngày trong tuần (0-6, Chủ nhật đến Thứ bảy)

Để chỉ định nhiều giá trị trong một trường, hãy sử dụng các ký hiệu toán tử sau:



  1. Dấu hoa thị (*): Để chỉ định tất cả các giá trị có thể có cho một trường
  2. Dấu gạch ngang (-): Đến NS chỉ định một loạt các giá trị
  3. Dấu phẩy (,): Để chỉ định một danh sách các giá trị
  4. Dấu phân tách (/): Để chỉ định một giá trị bước

Chỉnh sửa tệp Crontab

Crontab là một tệp chứa các công việc đã lên lịch theo một cú pháp cụ thể. Có hai loại tệp crontab; một cho các công việc cron dành riêng cho hệ thống và một cho các công việc cron cho người dùng cụ thể.

Công việc hệ thống cron

Các công việc cron trên toàn hệ thống được đặt trong / etc / crontab tập tin và /etc/cron.d thư mục và chúng được chạy qua /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly/etc/cron.monthly. Chỉ quản trị viên hệ thống mới có thể truy cập các tệp này.

Quản trị viên hệ thống có thể xác định công việc cron bằng lệnh sau:

$nano /Vân vân/crontab

Đây là cú pháp của công việc trong / etc / crontab tập tin:

# phút hr dayofmonth tháng lệnh tên người dùng dayofweek
* * * * *user1ifconfig

Công việc cron dành riêng cho người dùng

Các công việc cron dành riêng cho người dùng được đặt trong / var / spool / cron / crontabs danh mục. Mặc dù bạn có thể chỉnh sửa các công việc này theo cách thủ công, nhưng bạn nên chỉnh sửa các công việc này bằng lệnh crontab -e.

Người dùng tiêu chuẩn có thể xác định công việc cron bằng lệnh sau:

$crontab-Và

Ví dụ: nếu bạn đăng nhập với tư cách người dùng thử nghiệm, chạy lệnh crontab -e sẽ chỉnh sửa tệp crontab cho người dùng thử nghiệm. Tương tự, nếu bạn đăng nhập với tư cách người dùng root, lệnh crontab -e sẽ chỉnh sửa tệp crontab cho người dùng root.

Đưa ra lệnh dưới đây trong Terminal để chỉnh sửa tệp crontab cho bất kỳ người dùng nào khác:

$sudocrontab-u <tên tài khoản> -Và

Ví dụ: nếu bạn đăng nhập với tư cách là người dùng test1 và muốn chỉnh sửa tệp crontab cho người dùng test2, lệnh sẽ là:

$sudocrontab-utest2-Và

Đây là cú pháp của công việc cron có thể được thêm vào tệp crontab:

# m h dayofmonth tháng dayofweek lệnh
* * * * * ifconfig

Bạn có thể thấy trong các công việc dành riêng cho người dùng mà không có tên người dùng nào được nộp.

Lệnh Crontab

Lệnh crontab được sử dụng để chỉnh sửa, liệt kê và xóa các công việc cron:

  • crontab -e Để chỉnh sửa tệp crontab của người dùng hiện tại
  • crontab -l Để hiển thị nội dung của tệp crontab
  • crontab -u [tên người dùng] Để chỉnh sửa tệp crontab của bất kỳ người dùng nào khác
  • crontab -r Để xóa tệp crontab của người dùng hiện tại
  • crontab -i Để hiển thị lời nhắc trước khi xóa tệp crontab của người dùng hiện tại

Lên lịch công việc với Cron

Với Cron, bạn có thể chạy một công việc vào một thời gian, ngày tháng và khoảng thời gian cụ thể với đơn vị tối thiểu là phút, tức là bạn có thể chạy một công việc mỗi phút.

Để lên lịch công việc với cron, hãy mở tệp crontab bằng phương pháp được thảo luận trong phần trước. Sau khi mở tệp crontab, bạn sẽ được nhắc chọn một trình soạn thảo văn bản. Nhập một số để chọn trình soạn thảo văn bản ưa thích của bạn. Cuộn xuống cuối tệp và thêm công việc theo cú pháp được mô tả ở trên. Mỗi dòng trong tệp chỉ định một lệnh. Năm mục đầu tiên trong dòng chỉ định thời gian đã lên lịch và mục cuối cùng chỉ định lệnh hoặc tập lệnh nào sẽ chạy.

Thí dụ:

Dòng sau trong tệp crontab sẽ lên lịch công việc cron để chạy lệnh / script vào mỗi phút thứ 30 sau 5 giờ vào mỗi ngày trong tuần từ Thứ Hai đến Thứ Bảy.

* /30 5 * * 1-6chỉ huy/kịch bản

Phút

Trong trường này, chúng tôi chỉ định phút khi chúng tôi muốn lệnh được thực thi. Nó được chỉ định từ 0 đến 59. Dấu * trong trường này có nghĩa là chạy công việc mỗi phút. Trong dòng crontab ở trên, * / 30 yêu cầu công việc cron chạy lệnh / tập lệnh được chỉ định sau mỗi 30 phút.

Giờ

Trong trường này, chúng tôi chỉ định giờ khi chúng tôi muốn lệnh được thực thi. Nó được chỉ định từ 0 đến 23. Dấu * trong trường này có nghĩa là chạy công việc mỗi giờ. Trong dòng crontab ở trên, giá trị 5 yêu cầu công việc cron chạy lệnh / tập lệnh đã chỉ định năm giờ một lần.

Ngày trong tháng

Trong trường này, chúng tôi chỉ định các ngày cụ thể trong tháng khi chúng tôi muốn lệnh được thực thi. Nó được chỉ định từ 1 đến 31. Dấu * trong trường này có nghĩa là mỗi ngày. Trong dòng crontab trên, dấu * cho cron job để chạy lệnh / script được chỉ định mỗi ngày.

Thang của năm

Trong trường này, chúng tôi chỉ định các tháng cụ thể khi chúng tôi muốn lệnh được thực thi. Nó được chỉ định từ 1 đến 12. Dấu * trong trường này có nghĩa là hàng tháng. Trong dòng crontab ở trên, dấu * cho cron job chạy lệnh / script được chỉ định hàng tháng.

Ngày trong tuần

Trong trường này, chúng tôi chỉ định các ngày cụ thể trong tuần khi chúng tôi muốn lệnh được thực thi. Nó được chỉ định từ 0 đến 6 từ Chủ nhật đến thứ Bảy (0 cho Chủ nhật và 6 cho thứ Bảy). Dấu * trong trường này có nghĩa là mỗi ngày trong một tuần. Trong dòng crontab trên, dấu * cho cron job chạy lệnh / script được chỉ định mỗi ngày trong một tuần.

Ví dụ về Cron Jobs

Dưới đây là một vài ví dụ về công việc cron:

Chạy một công việc cron cứ sau 15 phút

Để lên lịch một công việc cron chạy 15 phút một lần, hãy thêm dòng dưới đây vào tệp crontab:

* /mười lăm * * * *chỉ huy/kịch bản

Thực hiện một công việc cron lúc 5 giờ sáng mỗi ngày

Để lên lịch công việc cron chạy lúc 5 giờ sáng hàng ngày, hãy thêm dòng bên dưới vào tệp crontab:

0 5 * * *chỉ huy/kịch bản

Thực hiện một công việc cron lúc 5 giờ chiều mỗi ngày

Để lên lịch công việc cron chạy lúc 5 giờ chiều hàng ngày, hãy thêm dòng bên dưới vào tệp crontab:

0 17 * * *chỉ huy/kịch bản

Thực hiện công việc cron lúc 9 giờ sáng ngày đầu tiên hàng tháng

Để lên lịch công việc cron chạy lúc 9 giờ sáng ngày đầu tiên hàng tháng, hãy thêm dòng dưới đây vào tệp crontab:

0 9 1 * *chỉ huy/kịch bản

Thực hiện một công việc cron mỗi giờ vào mỗi ngày 15 tháng 3

Để lên lịch công việc cron mỗi giờ vào ngày 15 tháng 3 hàng năm, hãy thêm dòng dưới đây vào tệp crontab:

0 * mười lăm 3 *chỉ huy/kịch bản

Chạy một công việc cron cứ sau 5 giờ

Để lên lịch một công việc cron cứ sau 5 giờ, hãy thêm dòng dưới đây vào tệp crontab:

0 * /5 * * *chỉ huy/kịch bản

Chạy một công việc cron cứ sau 15 phút

Để lên lịch một công việc cron chạy 15 phút một lần, hãy thêm dòng dưới đây vào tệp crontab:

* /mười lăm * * * *

Sử dụng chuỗi

Các chuỗi sau cũng có thể được sử dụng để xác định một công việc:

  1. @ giờ: Để thực hiện một công việc mỗi giờ một lần, tức là 0 * * * *
  2. @nửa đêm: Để thực hiện một công việc mỗi ngày một lần, tức là 0 0 * * *
  3. @hằng ngày: giống như nửa đêm
  4. @weekly: Để thực hiện một công việc mỗi tuần một lần, tức là 0 0 * * 0
  5. @monthly: Để thực hiện một công việc mỗi tháng một lần, tức là 0 0 1 * *
  6. @annently: Thực hiện một công việc mỗi năm một lần, tức là 0 0 1 1 *
  7. @yearly: giống như @annently
  8. @reboot: Để thực hiện một công việc một lần mỗi khi khởi động

Ví dụ: để chạy một tập lệnh hoặc lệnh hàng tuần, mục nhập trong tệp crontab sẽ là:

@lệnh hàng tuần/kịch bản

Thư mục Cron được xác định trước

Có một số thư mục cron được xác định trước trong Linux, nơi các tập lệnh được lưu trữ sẽ tự động được thực thi. Nếu chúng ta đặt bất kỳ tập lệnh nào dưới các thư mục này, nó sẽ tự động được thực thi tại thời điểm đã định cấu hình.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

Ví dụ: để thực thi một tập lệnh mỗi tháng một lần, bạn sẽ cần đặt nó vào /etc/cron.monthly.

Xem công việc của Cron

Xem công việc cho người dùng hiện tại

Sử dụng lệnh sau để xem tất cả các công việc cron đã lên lịch cho người dùng hiện tại:

$crontab-NS

Xem công việc cho người dùng gốc

Để xem tất cả các công việc đã lên lịch của người dùng root, hãy sử dụng lệnh sau trong Terminal:

$con mèo /Vân vân/crontab

Bạn sẽ cần đăng nhập với tư cách là người dùng root hoặc chạy lệnh với tư cách sudo.

Xem công việc cho những người dùng khác

Để xem tất cả các công việc đã lên lịch của một người dùng cụ thể, hãy phát hành lệnh sau trong Terminal thay thế bằng tên người dùng thực:

$sudocrontab-u <tên tài khoản> -NS

Để chạy lệnh này, bạn sẽ cần các đặc quyền sudo.

Xem công việc hàng giờ

Để xem tất cả các công việc cron được cấu hình để chạy hàng giờ, hãy sử dụng lệnh sau trong Terminal:

$ls -NS /Vân vân/cron.hourly

Xem công việc hàng ngày

Để xem tất cả các công việc cron được cấu hình để chạy hàng ngày, hãy sử dụng lệnh sau trong Terminal:

$ls -NS /Vân vân/cron.daily/

Xem công việc hàng tuần

Để xem tất cả các công việc cron được cấu hình để chạy hàng tuần, hãy sử dụng lệnh sau trong Terminal:

$ls -NS /Vân vân/cron.weekly/

Xem công việc cron hàng tháng

Để xem tất cả các công việc cron được cấu hình để chạy hàng tháng, hãy sử dụng lệnh sau trong Terminal:

$ls -NS /Vân vân/cron.monthly/

Sao lưu tất cả công việc của Cron

Bạn nên giữ một bản sao lưu của tất cả các công việc cron trong một tệp để bạn có thể khôi phục trong trường hợp xóa. Để tạo bản sao lưu của tất cả các công việc hiện tại, hãy sử dụng toán tử chuyển hướng để chuyển hướng đầu ra của crontab -l thành một tệp.

$crontab-NS >backup_cron.txt

Xóa tất cả công việc Cron đã lên lịch

Để loại bỏ tất cả các công việc cron đã lên lịch, hãy sử dụng cờ -r như sau:

$crontab-NS

Quyền Cron

Chúng tôi có thể giới hạn quyền truy cập vào lệnh crontab thông qua hai tệp: / etc / cron.allow và / etc / cron.deny.

  • /etc/cron.allow - Thêm người dùng (một người trên mỗi dòng) mà bạn muốn cho phép truy cập vào các lệnh crontab. Những người dùng này có thể chạy các công việc theo lịch trình.
  • /etc/cron.deny - Thêm người dùng (mỗi người một dòng) mà bạn muốn từ chối quyền truy cập vào các lệnh crontab. Những người dùng này không thể chạy các công việc đã lên lịch.

Trình tạo cú pháp Crontab

Có một số trang web cho phép tạo cú pháp cho crontabs. Các trang web này giúp tạo biểu thức crontab dễ dàng hơn mà không cần phải nhớ cú pháp. Mặc dù có nhiều trang web khác nhau có sẵn cho các trình tạo cú pháp, chẳng hạn như crontabgenerator.com , crontab-generator.org , và cronmaker.com . Cái mà tôi chủ yếu thích và thấy hữu ích là crontab.guru . Dựa trên đầu vào của người dùng, nó tạo ra một biểu thức crontab mà bạn có thể sao chép-dán vào tệp crontab.

Phần kết luận

Trong hướng dẫn này, chúng tôi đã giải thích những điều cơ bản về cron job, cú pháp của nó và cách thiết lập nó. Chúng tôi cũng đã thảo luận về cách xem các công việc cron, tạo bản sao lưu và xóa chúng nếu không còn cần thiết.