Chạy một công việc Cron mỗi phút

Run Cron Job Every Minute



Nếu bạn muốn chạy một chương trình hoặc tập lệnh nền trên Linux thì cron job rất quan trọng. Với sự trợ giúp của cron job, bạn có thể thực thi một chương trình hoặc tập lệnh ở chế độ nền sau một khoảng thời gian nhất định.

Hãy cùng xem một số ví dụ thực tế về công việc cron.







  • Giả sử, bạn sở hữu một trang web và bạn muốn gửi email cho tất cả những người dùng trang web của mình mỗi ngày. Tất cả những gì bạn phải làm là viết một kịch bản gửi email và thiết lập một công việc cron để chạy tập lệnh đó mỗi ngày.
  • Giả sử, bạn sở hữu một công ty quảng cáo và bạn muốn nhắc tất cả các nhà quảng cáo có số dư dưới 5 đô la hãy nạp tiền lại. Tất cả những gì bạn phải làm là viết một tập lệnh kiểm tra số dư của tất cả các nhà quảng cáo và khi nó dưới 5 đô la, nó sẽ gửi thông báo đến số điện thoại di động hoặc email của nhà quảng cáo. Sau đó, thiết lập một công việc cron để chạy tập lệnh cứ sau 5 đến 10 phút hoặc mỗi giờ.

Có rất nhiều cách sử dụng khác của cron job trong Linux.



Trong bài viết này, tôi sẽ chỉ cho bạn cách chạy cron job mỗi phút trên Linux. Tôi sẽ sử dụng Debian 9 Stretch để trình diễn. Nhưng bạn có thể sử dụng bất kỳ bản phân phối Linux hiện đại nào mà bạn lựa chọn. Bắt đầu nào.



Trên Linux, bạn không cần phải nguồn gốc để chạy các công việc cron. Bạn có thể chạy cron job với tư cách là bất kỳ người dùng nào. Mọi người dùng trên Linux đều có thể sử dụng crontab để chạy tập hợp cron job của riêng họ.





Theo mặc định, người dùng không có crontab tệp trên Linux. Bạn có thể tạo một crontab tệp bằng lệnh sau:

$crontab-Và



Nếu bạn đang chạy lệnh này lần đầu tiên, thì bạn sẽ được yêu cầu chọn một trình soạn thảo văn bản từ danh sách. tôi sẽ nhặt nano , cái mặc định. Bạn có thể chọn một trong những bạn thích. Khi bạn đã hoàn tất, hãy nhấn .

Các crontab tệp phải được tạo (nếu chưa có) và mở bằng trình soạn thảo văn bản yêu thích của bạn. Giờ đây, bạn có thể thêm cron job của riêng mình vào cuối tệp này và khi bạn hài lòng, chỉ cần lưu nó và thoát ra khỏi trình soạn thảo văn bản.

Cú pháp chạy lệnh mỗi phút:

Cú pháp của crontab tệp như sau:

phút giờ ngàyOf Tháng tháng ngàyOfWeek commandToRun

Ở đây,

  • phút có thể 0 đến 59 .
  • giờ cũng có thể là 0 đến 59 .
  • dayOfMonth có thể 1 đến 31 .
  • tháng có thể 1 đến 12 .
  • ngày trong tuần có thể 0 đến 7 . 07 có nghĩa là chủ nhật, 1 nghĩa là thứ hai, 2 có nghĩa là thứ ba và như vậy.

Để chạy một commandToRun lệnh mỗi phút, bạn nên viết nó trong crontab tập tin như sau:

* * * * *commandToRun

Chạy một công việc Crob mỗi phút:

Bây giờ chúng ta đã biết các lý thuyết, hãy thêm một tập lệnh đơn giản timer.sh đến crontab và xem cách quản lý nó.

bên trong timer.sh script, tôi chỉ có những dòng mã sau đây. Tất cả những gì nó làm là tạo một tệp mới /home/shovon/bin/timer.log (nếu chưa tồn tại) và thêm đầu ra của lệnh ngày vào nó.

Bây giờ chúng ta hãy thêm tập lệnh vào crontab và để nó chạy mỗi phút với dòng sau:

* * * * * /Trang Chủ/shovon//timer.sh

Khi bạn lưu crontab tệp và thoát khỏi trình soạn thảo văn bản, crontab tập tin sẽ được cài đặt.

Sau một phút trôi qua, một tệp mới được timer.log được tạo trong thư mục mong muốn như bạn có thể thấy trong phần được đánh dấu của ảnh chụp màn hình bên dưới.

Từ timer.log tệp nhật ký, rõ ràng là tập lệnh timer.sh chạy mỗi phút.

Bắt lỗi từ Cron Jobs:

Để bắt lỗi từ công việc cron, bạn có thể gửi lỗi đến lỗi. nhật ký tệp và kết quả đầu ra bình thường đến access.log tập tin chẳng hạn. Tất nhiên bạn có thể đặt tên tệp bất kỳ thứ gì bạn muốn.

Để chứng minh điều này, tôi đã sửa đổi tập lệnh của mình timer.sh một chút. Bây giờ các lỗi được gửi đến lỗi. nhật ký tập tin trong / home / shovon / bin thư mục và kết quả đầu ra được gửi đến access.log bên trong / home / shovon / bin danh mục.

Lúc đầu, / tmp / i_must_be_here tệp không tồn tại, vì vậy tôi gặp lỗi trong lỗi. nhật ký tệp như bạn có thể thấy.

Các access.log tệp đang trống vào lúc này.

Bây giờ tôi sẽ tạo tệp / tmp / i_must_be_here

Và như bạn có thể thấy, đầu ra ở access.log nộp hồ sơ ngay bây giờ.

Nếu muốn, bạn có thể chuyển hướng đầu ra và các lỗi trong cùng một tệp như sau:

Như bạn có thể thấy, đầu ra STDIN và STDERR được gửi đến out.log tập tin.

Đảm bảo rằng công việc cuối cùng đã chạy xong trước khi chạy lại công việc:

Để điều này hoạt động, bạn có thể tạo một tệp tạm thời ngay sau khi công việc bắt đầu và xóa nó ngay trước khi nó kết thúc. Sau đó, bạn có thể kiểm tra xem tệp tạm thời có tồn tại hay không trước khi bắt đầu công việc. Nếu có, bạn có thể thoát khỏi công việc và chỉ chạy công việc khi tệp tạm thời không khả dụng.

Tập lệnh đơn giản này thực hiện điều đó.

Như bạn có thể thấy, timer.pid tệp được tạo.

Đọc access.log tệp chứng minh rằng công việc cron không chạy trước khi công việc cron trước đó chạy xong. Như bạn có thể thấy, nó chạy lúc 01:32:01 và lần tiếp theo nó sẽ chạy lúc 01:33:01, nhưng nó đã không chạy. Thay vào đó, nó chạy lúc 01:35:01, khoảng 3 phút sau đó.

Sắp xếp đầu ra công việc Cron để dễ dàng gỡ lỗi:

Bạn có thể định dạng đầu ra một cách độc đáo để giúp công việc cron của bạn gỡ lỗi dễ dàng hơn.

Một ví dụ về cách nó có thể được thực hiện được đưa ra trong tập lệnh sau.

Như bạn có thể thấy, kết quả đầu ra, lỗi và thông báo thành công được in độc đáo trong tệp nhật ký.

Bạn có thể làm những điều tuyệt vời với cron job và shell script. Tôi đã trình bày một số ý tưởng ở đây. Nhưng bầu trời là giới hạn của bạn. Hãy thử nghiệm với bất kỳ ý tưởng nào bạn có. Cảm ơn đã đọc bài viết này.