Điểm:1

Công việc định kỳ dường như đang chạy nhưng không có đầu ra và bị tắt sau một thời gian

lá cờ fr
VII

Tôi đang cố chạy tập lệnh python của mình bằng crontab. Tôi có 2 tập lệnh python trong cùng một thư mục. Cái đầu tiên tập tin1.py chỉ có 1 dòng in(1). tập tin thứ hai tập tin2.py bắt đầu với in(2) nhưng sau đó là một đoạn mã dài để truy vấn và cập nhật dữ liệu trong cơ sở dữ liệu SQL của tôi.

thiết lập của tôi trong crontab -e giống như thế này (tôi thiết lập các tệp để chạy mỗi phút và lưu kết quả đầu ra vào cron.log

* * * * * cd /path/to/files && python3 file1.py >> /path/to/files/cron.log 2>&1
* * * * * cd /path/to/files && python3 file2.py >> /path/to/files/cron.log 2>&1

Khi tôi kiểm tra đầu ra trong cron.log, ban đầu tôi chỉ thấy 1, đó là từ tập tin1.py nhưng tôi không thấy bất kỳ 2, đầu ra của tập tin2.py. Tuy nhiên, sau một lúc, có lẽ khoảng 10 phút, tôi thấy bị giết Trong cron.log.

Tôi nghĩ rằng bị giết thông báo có nghĩa là cron đã bắt đầu công việc để chạy tập tin2.py và giết công việc sau một thời gian. Tôi không quan tâm đến lý do tại sao cron giết chết công việc của tôi. Điều tôi bối rối là nếu cron bắt đầu công việc để chạy tập tin2.py, tại sao không có 2 Trong cron.log. Tất cả những gì tôi thấy là 1bị giết. Cả hai tệp này đều chạy mà không gặp vấn đề gì khi tôi chạy chúng theo cách thủ công. Đánh giá cao bất kỳ sự giúp đỡ

VII avatar
lá cờ fr
VII
xin lỗi xấu của tôi, chỉnh sửa
Điểm:1
lá cờ hr

Tôi nghi ngờ đó là vì khi đầu ra được chuyển hướng, python3 sẽ lưu vào bộ đệm luồng đầu ra tiêu chuẩn của nó - và bộ đệm không bị xóa khi quá trình bị hủy.

Để minh họa, đưa ra

$ con mèo tệp2.py
thời gian nhập khẩu
in(2)
time.sleep(5)

sau đó

hết thời gian $ 3 python3 file2.py
2

nhưng trái lại

$ timeout 3 python3 file2.py | con mèo
chấm dứt

Nếu bạn buộc trăn3 để hủy bộ đệm các luồng của nó, bạn có thể sẽ thấy đầu ra nhật ký dự kiến:

hết thời gian $ 3 python3 -u file2.py | con mèo
2
chấm dứt
VII avatar
lá cờ fr
VII
cảm ơn vì câu trả lời của bạn, vâng, tôi cần hủy bộ đệm đầu ra. Xin lỗi, đây là lần đầu tiên tôi hỏi trên cộng đồng này nên chưa thể bình chọn cho câu trả lời của bạn (chưa đủ danh tiếng).
mondotofu avatar
lá cờ cn
Có hợp lý không khi ghi đầu ra vào hai tệp cron.log riêng biệt để giảm bớt sự tranh chấp?
lá cờ hr
@mondotofu đó là một câu hỏi hay - Tôi thực sự không biết

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.