Vòng lặp vô hạn của các công việc cron với đầu ra trung gian từ mỗi công việc


0

Tôi có một chương trình xuất công cụ thành đầu ra tiêu chuẩn. Tôi đang sử dụng cron để lên lịch cho việc đó là tốt vì tôi đang thu thập những thứ mà nó in ra qua email và thực hiện một số công việc thống kê về điều đó. Tôi muốn điều này tiếp tục về cơ bản mãi mãi.

Tương tự như câu hỏi 538622 , tôi cũng muốn công việc "gửi lại" chính nó khi hoàn thành. Điều này không thể được thực hiện thông qua một tập lệnh vòng lặp vô hạn bởi vì tôi cần liên tục thu thập những gì được gửi qua email từ cron.

Nếu có thể, tôi cũng muốn có N công việc diễn ra song song khi máy tính có N CPU.

Cho đến nay, tôi đã lên lịch các công việc để chạy mỗi X phút nhưng vì máy tính được người khác sử dụng, nên việc sử dụng thời gian này không hiệu quả và có nguy cơ làm đầy máy với công việc của tôi mất nhiều thời gian hơn và lâu hơn ( sao cho X phút không đủ).

Bất kỳ ý tưởng về làm thế nào để làm điều này?

Câu trả lời:


0

Dựa trên tập lệnh trong câu hỏi được đề cập, bạn có thể tìm nạp đầu ra lệnh vào một tệp và gửi email nội dung tệp sau khi một lần lặp hoàn thành. Trong trường hợp đó, bạn có thể có một vòng lặp vô hạn và khi bạn khởi động nó bằng cách sử dụng nohup vào nền, nó có thể chạy miễn là máy chủ lưu trữ.

Kịch bản mẫu (được gọi là parse.sh trong trường hợp này) có thể là:

while true
do
    command &> /tmp/output_thread_$1
    cat /tmp/output_thread_$1 | mail -s "output from thread $1" email@recipient
done

Nếu bạn gọi kịch bản bằng

for thread in 1 2 3 4; do nohup parse.sh $thread & done;

trong đó 4 là số cpus. Nó sẽ bắt đầu (trong trường hợp này) 4 quy trình thực hiện công cụ của bạn


Điều này sẽ giải quyết nhiệm vụ của tôi nhưng nó mất đi tính năng tuyệt vời khi để cron chăm sóc việc gửi email đầu ra tiêu chuẩn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.