Crontab trong Linux – với các ví dụ và công cụ thời gian thực

Spread the love

Hãy cùng khám phá crontab, các lệnh của nó và các hoạt động khác nhau liên quan đến Crontab.

Chúng ta sẽ tìm hiểu cách lập lịch tác vụ bằng tiện ích cron và cuối cùng, chúng ta cũng sẽ thảo luận về một số công cụ trực tuyến giúp chúng ta định dạng và kiểm tra các lệnh cron.

Mục lục

Nguồn gốc

Crontab là viết tắt của “cron table”. Từ cron đã được lấy từ tiếng Hy Lạp Chronos có nghĩa là thời gian. Crontab là một quy trình daemon hệ thống sẽ tự động thực hiện một số tác vụ và công việc theo thời gian đã định.

Trường hợp sử dụng

Crontab hữu ích để thực hiện các hoạt động khác nhau như xử lý sao lưu tự động, xoay tệp nhật ký, đồng bộ hóa tệp giữa các máy từ xa và xóa các thư mục tạm thời, v.v. Crontab có thể được sử dụng cho bất kỳ loại công việc nào, nhưng nó trở nên đặc biệt hữu ích khi chúng ta bắt đầu xử lý quản trị hệ thống loại công việc.

Sử dụng cron, quản trị viên có thể lên lịch để chạy công việc vào một ngày và giờ cụ thể.

  Cách tối ưu hóa ổ SSD trên Linux

Vì vậy, hãy xem làm thế nào chúng ta có thể thiết lập điều này.

Cú pháp Crontab

Để thực hiện một danh sách các lệnh, tiện ích cron đọc các tệp cấu hình. Để diễn giải các dòng trong bảng cấu hình crontab, nó tuân theo cú pháp Crontab. Crontab có sáu trường và năm (1-5) trường đầu tiên xác định ngày và thời gian thực thi. Trường cuối cùng, tức là trường thứ 6, có thể là tên người dùng và / hoặc tác vụ / công việc / lệnh / tập lệnh sẽ được thực thi.

* * * * * USER_NAME COMMAND / SCRIPT-ĐỂ THỰC HIỆN

│ │ │ │ │
│ │ │ │ │
│ │ │ │ | _________ Ngày trong tuần (0 – 6) (0 là Chủ nhật, hoặc sử dụng tên)
│ │ │ | ____________ Tháng (1 – 12), * nghĩa là hàng tháng
│ │ | ______________ Ngày trong tháng (1 – 31), * có nghĩa là mỗi ngày
│ | ________________ Giờ (0 – 23), * nghĩa là mỗi giờ
| ___________________ Phút (0 – 59), * nghĩa là mỗi phút

Ghi chú:

  • Dấu hoa thị
  • được sử dụng để so khớp tất cả các giá trị có thể có cho một trường. Ví dụ: dấu hoa thị được sử dụng trong trường giờ sẽ tương đương với mỗi giờ hoặc dấu hoa thị trong trường tháng sẽ tương đương với hàng tháng.

tên người dùng là tùy chọn (chỉ khả dụng nếu đó là tệp crontab hệ thống)

Ví dụ:

Hãy hiểu cú pháp trên với một số ví dụ

0 5 * * * /scripts/job.sh

1. Lên lịch thực thi cron lúc 5 giờ sáng hàng ngày

0 6,18 * * * /scripts/job.sh

2. Lập lịch cron để thực thi hai lần một ngày vào lúc 6 giờ sáng và 6 giờ chiều

* * * * * /scripts/job.sh

3. Lên lịch cho một cron để thực thi mỗi phút

0 19 * * mon /scripts/job.sh

4. Lên lịch cron để thực thi vào thứ Hai hàng tuần lúc 7 giờ tối.

*/10 * * * * /scripts/job.sh

5. Lập lịch thực thi cron sau mỗi 15 phút.

* * * feb,jun,oct * /script/job.sh

6. Lên lịch một cron để thực thi vào những tháng đã chọn

25 7 4 3 * /home/script/backup.sh

7. Chạy tập lệnh shell /home/script/backup.sh vào ngày 4 tháng 3 lúc 7:25 sáng

8. Lập lịch cho một cron thực thi cứ sau 30 giây

  • Vì chúng tôi không có quyền kiểm soát giây trong Crontab, nhưng chúng tôi có thể đạt được nó thông qua quy trình hai bước dưới đây.
* * * * * /home/scripts/script.sh
  • Đầu tiên, hãy lên lịch cho một tác vụ chạy mỗi phút.
* * * * * sleep 30; /home/scripts/script.sh

Bây giờ chúng ta hãy sử dụng lệnh ngủ để tạm dừng thực thi trong 30 giây.

Tác vụ trên sẽ dừng quá trình thực hiện trong 30 giây và nó sẽ tiếp tục trở lại.

Loại tệp cấu hình Cron

Có hai loại tệp cấu hình Cron:

Crontab hệ thống UNIX / Linux

Điều này yêu cầu đặc quyền root vì thường nó được sử dụng cho các dịch vụ hệ thống và các công việc quan trọng. Trường thứ sáu (trong mô tả cú pháp ở trên) là tên của người dùng để chạy lệnh. Nó cung cấp khả năng cho hệ thống crontab để chạy các lệnh như bất kỳ người dùng nào.

Người dùng Crontab

Người dùng cũng có thể cài đặt cron job của riêng họ bằng lệnh crontab. Ở đây, trường thứ sáu (trong mô tả cú pháp ở trên) là lệnh chạy và tất cả các lệnh chạy với tư cách là người dùng đã tạo crontab. Mỗi người dùng có thể có tệp crontab của riêng họ và mặc dù đây là các tệp trong / var / spool / cron / crontabs, chúng không nhằm mục đích chỉnh sửa trực tiếp. Chúng ta cần sử dụng lệnh crontab để chỉnh sửa hoặc thiết lập cron job của riêng mình.

Làm thế nào nó hoạt động? Dịch vụ cron (daemon) chạy trong nền và liên tục kiểm tra (mỗi phút) tệp / etc / crontab và các thư mục /etc/cron.*/. Nó cũng kiểm tra thư mục / var / spool / cron /. Các lệnh được thực thi bởi cron

khi các trường phút, giờ và tháng khớp với thời gian hiện tại và ít nhất một trong các trường hai ngày (ngày trong tháng hoặc ngày trong tuần) khớp với ngày hiện tại.

Các lệnh cơ bản

Liệt kê các Công việc Cron Hiện tại

crontab -l

Chúng tôi có thể liệt kê tất cả các công việc Cron mà không cần mở tệp cấu hình crontab bằng lệnh dưới đây

[[email protected] ~]# crontab -l
no crontab for techpoe.com
[[email protected] ~]#

Nếu không có công việc hiện tại, nó sẽ trả về kết quả đầu ra là

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Nếu người dùng đã thêm một số công việc, nó sẽ hiển thị như sau.

  Cách thiết lập trình chỉnh sửa hex trên Kali Linux

Bảng cron dành riêng cho người dùng, có nghĩa là bạn phải đăng nhập bằng một người dùng cụ thể để xem danh sách bảng cron.

Liệt kê Cron cho người dùng cụ thể

Để liệt kê các công việc đã lên lịch của một người dùng khác, hãy sử dụng tùy chọn dưới dạng -u (Người dùng) và -l (Danh sách).

crontab -u another_username -l

Ví dụ: crontab -u techpoe.com -l

Thêm / sửa đổi mục nhập Crontab

Để chỉnh sửa mục crontab, chúng ta có thể sử dụng tùy chọn -e như hình dưới đây.

crontab -e

Lệnh trên sẽ mở các trình soạn thảo vi nơi bạn chỉ định các chi tiết của công việc và lưu tệp. Sau khi lưu, bạn có thể xác minh xem cron đã được định cấu hình hay chưa với crontab -l.

Thêm / sửa đổi mục nhập Crontab cho người dùng cụ thể

crontab -u another_username -e

Chúng tôi có thể chỉnh sửa crontab cho người dùng khác bằng lệnh dưới đây

Ví dụ: crontab -u techpoe.com -e

Xóa mục nhập Crontab

Sử dụng tham số -r với Crontab để xóa các công việc đã lên lịch hoàn chỉnh mà không cần xác nhận từ crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete techpoe.com's crontab?

Nếu bạn muốn xác nhận trước khi xóa các công việc đã lên lịch, hãy sử dụng tùy chọn -i với -r, tùy chọn này sẽ nhắc người dùng xác nhận trước khi xóa crontab của người dùng.

Chuỗi đặc biệt Crontab

Ngoài cú pháp ở trên mà chúng ta đã thảo luận, chúng ta cũng có thể sử dụng tám chuỗi đặc biệt do Crontab cung cấp. Nó sẽ không chỉ tiết kiệm thời gian của chúng tôi mà còn cải thiện khả năng đọc.
Chuỗi đặc biệt
Sự mô tả
@reboot
Chạy một lần, sau khi khởi động.
@yearly
Chạy mỗi năm một lần, tức là, 0 0 1 1 *
@annently
Giống như @yearly
@monthly
Chạy mỗi tháng một lần, tức là, 0 0 1 * *
@weekly
Chạy mỗi tuần một lần, tức là, 0 0 * * 0
@hằng ngày
Chạy một lần một ngày, tức là, 0 0 * * *
@nửa đêm
Giống với @daily
@hourly

Chạy mỗi giờ một lần, tức là, 0 * * * *

Ví dụ về chuỗi đặc biệt của Crontab

1. Crontab để lên lịch nhiệm vụ hàng năm

@yearly /scripts/greeting.sh

Chúng ta có thể thực hiện ở trên một để gửi lời chúc mừng năm mới, Nó sẽ thực hiện vào phút đầu tiên của mỗi năm.

2. Crontab để lên lịch các tác vụ cần thực hiện hàng tháng.

@monthly /scripts/cleanup.sh

Chúng ta có thể thực hiện lệnh trên để thực hiện một số hoạt động dọn dẹp vào đầu mỗi tháng.

Tương tự, chúng ta có thể sử dụng chuỗi đặc biệt khác của Crontab cho các mục đích hàng tuần, hàng ngày và hàng giờ.

Thư mục Cron

  • Quản trị viên hệ thống có thể sử dụng lịch biểu cron toàn hệ thống nằm trong thư mục cron được xác định trước như hình dưới đây
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Ví dụ về thời gian thực của Crontab

Hãy thảo luận về một số ví dụ thời gian thực mà quản trị viên hệ thống hoặc các chuyên gia CNTT thường sử dụng.

Xóa các tệp và thư mục trống

45 0 * * * techpoe.com find / tmp -type f -empty -delete

Biểu thức cron trên sẽ tìm thấy các tệp và thư mục trống từ thư mục / tmp và nó sẽ xóa chúng. Công việc này sẽ chạy lúc 12 giờ 45 phút hàng ngày. Chúng tôi cần phải đề cập đến tên người dùng để thực hiện công việc này. Trong ví dụ trên, người dùng techpoe.com đang thực hiện thao tác cron job.

Thực thi nhiều tác vụ bằng cách sử dụng một cron duy nhất

  Cách lấy kích thước của tệp hoặc thư mục trong Linux

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Nhiều nhiệm vụ / công việc có thể được phân tách bằng dấu chấm phẩy (;) và có thể được gán cho một biểu thức cron duy nhất.

Công cụ kiểm tra và định dạng cron

Cho đến nay chúng ta đã thảo luận về các lệnh và cú pháp của crontab để lập lịch cho một tác vụ. Nhưng điều gì xảy ra nếu bạn không phải là quản trị viên hệ thống và công việc của bạn không phải thiết lập Cron thường xuyên, bạn có thể không nhớ được cú pháp và nó mở ra khả năng xảy ra lỗi. Đừng lo lắng, chúng tôi có giải pháp cho vấn đề này.

Có một số công cụ định dạng Cron trực tuyến.

# 1. Trình tạo công việc Cron Cron Job Generator

là một GUI rất thân thiện với người dùng, nơi bạn có thể chỉ định phút, ngày và đường dẫn của tập lệnh để tạo crontab.

Hãy lấy một ví dụ thời gian thực, nơi tôi phải thực thi /home/processMonitor.sh cứ sau 5 phút từ Thứ Hai đến Thứ Sáu.

Vì vậy, tôi đã nhận được cú pháp Cron dưới đây mà tôi có thể đưa vào crontab của mình bằng cách thực thi
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

là một công cụ lập lịch trình công việc dựa trên web hữu ích. Chúng ta có thể tạo một công việc cron bằng cách chỉ định một URL để gọi, chúng ta có thể đặt thời gian mà nó sẽ được thực thi. Chúng tôi cũng có thể chỉ định một biểu thức cron hoặc thêm nó theo cách thủ công từ một biểu mẫu mô tả. Quan trọng là, chúng tôi có thể tùy chọn sử dụng xác thực HTTP cơ bản cho một lớp bảo mật nhỏ.

Không chỉ điều này, mà Easycron cũng có thể được sử dụng để đạt được các mục đích khác như biểu thức Cron tiêu chuẩn, Nhật ký thực thi công việc Cron, Thông báo qua email, Nhật ký lỗi riêng biệt, v.v.

# 3. Máy phát điện Crontab Máy phát điện Crontab

là một công cụ tiện dụng khác để tạo crontab và với công cụ này, bạn cũng có thể thêm nếu muốn lưu đầu ra cron vào tệp hoặc gửi đến email.

# 4. Crontab Guru Crontab Guru

là một trình soạn thảo biểu thức lịch biểu cron trực tuyến đơn giản. Ngoài ra, nó cung cấp một phương tiện hữu ích để theo dõi cronjob của bạn. Tất cả những gì chúng ta cần làm là sao chép một lệnh được cung cấp và thêm vào cuối định nghĩa crontab. Trong trường hợp công việc cron không thành công hoặc thậm chí không bắt đầu, bạn sẽ nhận được một email thông báo.

Trong ví dụ dưới đây, Job sẽ thực thi lúc 04:05, hàng ngày, hàng tháng và hàng tuần.

# 5. Máy thử CRON CRON Tester

cho phép chúng tôi kiểm tra các định nghĩa ngày / giờ cron. Có thể có một tình huống mà chúng tôi phải giải mã cú pháp cron hiện có để khắc phục sự cố hoặc chỉ muốn thực hiện một bài kiểm tra.

Để làm như vậy, chúng ta có thể sử dụng công cụ này. Tất cả những gì chúng ta cần làm là sao chép và dán biểu thức cron của mình vào trường định nghĩa cron, sau đó chọn số lần lặp và nhấp vào Kiểm tra để xem các ngày khác nhau mà biểu thức sẽ chạy.

Hãy kiểm tra một trong các biểu thức cron của chúng tôi 4 3 * / 2 * * sẽ chạy lúc 03:04 (SA) hai ngày một lần. Hãy xác minh nó với cron tester.

Sự kết luận Tôi hy vọng những điều trên sẽ giúp bạn hiểu rõ hơn về Crontab và cách thiết lập cron job. Lập lịch công việc thông qua Cron là một trong nhiều tác vụ được thực hiện bởi Quản trị viên Linux. Nếu bạn quan tâm đến việc học các kỹ năng nâng cao thì hãy xem phần nàykhóa học

.

x