จับรหัสข้อผิดพลาดของกระบวนการหลามนอกพวกเขาใน linux?


0

ฉันใช้รหัสหลามไม่ใช่ของฉันที่ทำงานมาหลายวันหรือหลายสัปดาห์ อาจมีข้อผิดพลาดบางอย่างเหลืออยู่ดังนั้นจึงอาจมีข้อผิดพลาดเป็นครั้งคราว แต่ฉันไม่ต้องการตรวจสอบทุกสองสามชั่วโมง ฉันรู้ว่ากระบวนการไพ ธ อนส่งคืนรหัส! = 0 ถ้ามีอะไรเกิดขึ้น

แต่เป็นไปได้ไหมที่จะจับสิ่งนั้นจากนอกกระบวนการ? ถ้าใช่ฉันต้องการทำเช่นนั้นฉันสามารถส่งอีเมลถึงตัวเองได้หากเกิดอะไรขึ้น

ขอบคุณ.

คำตอบ:


0

สิ่งที่คุณต้องทำคือตรวจสอบรหัสส่งคืนโดยใช้บางสิ่งเช่น: -

if PythonScript then
    # Actions on success
    ...
else
    # Actions on failure
    err=$?
    ...
fi

โปรดทราบว่ารหัสที่ส่งคืน $? ถูกเขียนทับโดยทุกคำสั่งที่ดำเนินการดังนั้นหากจำเป็นต้องใช้ค่าสำหรับการบันทึกหรือวัตถุประสงค์อื่นคุณต้องบันทึกก่อนที่คำสั่งต่อมาจะเปลี่ยน

หากว่า PythonScript สามารถเรียกใช้งานได้และมีบรรทัดแรก #!/usr/bin/python (หรือพา ธ ไปยังเวอร์ชัน python ที่จะใช้) จากนั้นสามารถเรียกใช้ได้โดยตรง ไม่เช่นนั้นควรนำหน้าด้วย python หรือรุ่นที่เหมาะสม


คุณช่วยอธิบายรายละเอียดได้ไหม? หากฉันใช้ a.py ซึ่งใช้เวลานานฉันก็จะเรียกใช้ b.py ซึ่งสามารถตรวจสอบได้ว่า a.py ส่งคืนข้อความแสดงข้อผิดพลาดหรือไม่ เพราะฉันไม่ต้องการยุ่งใน a.py
Pythoneer

คำถามและความคิดเห็นของคุณไม่ชัดเจน คุณส่งข้อผิดพลาดไปยังวิธีใด b.py? ในพารามิเตอร์เรียกใช้หรือไม่ ในตัวแปรสภาพแวดล้อม? ในไฟล์หรือไม่? ฉันไม่สามารถอธิบายคำตอบของฉันได้อย่างละเอียดจนกว่าคุณจะตอบคำถามของคุณอย่างละเอียด ถ้าคุณจะวิ่ง b.pyจากนั้น if ในคำตอบของฉันไม่จำเป็น: มันอาจจะง่ายเหมือน a.py; b.py $?ที่ไหน b.py ถูกส่งผ่านรหัสความสมบูรณ์จาก a.py ในพารามิเตอร์แรก
AFH

ไม่นั่นเป็นประเด็น ฉันเริ่มหน้าจอเริ่ม python a.py แล้วปล่อยให้มันรันแน่นอน นั่นคือทั้งหมดที่ฉันทำ หาก a.py ขัดข้องจะปรากฏในหน้าจอเพราะจะพิมพ์สิ่งที่ส่งคืน 1 ... และฉันต้องการจับสิ่งนี้ ...
Pythoneer

ฉันสันนิษฐานว่า a.py โทร sys.exit() เพื่อส่งคืนสถานะความสมบูรณ์ หากไม่เป็นเช่นนั้นคุณจะมีปัญหาในการอ่านสตริงจากหน้าต่าง: แม้ว่าคุณจะไม่ต้องการแก้ไขก็ตาม a.pyนี่อาจเป็นคำตอบที่ง่ายที่สุด
AFH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.