เกี่ยวกับhttps://stackoverflow.com/a/41613532/1223975แก้ปัญหาที่อเล็กซานเดมิลส์โพสต์ใหม่Timeout in Seconds
Darwin
เป็นวิธีแก้ปัญหาสำหรับ UNIX เหมือนระบบปฏิบัติการที่ไม่ได้มี tail
GNU ไม่เฉพาะเจาะจงDarwin
แต่ขึ้นอยู่กับอายุของระบบปฏิบัติการที่คล้าย UNIX บรรทัดคำสั่งที่นำเสนอมีความซับซ้อนเกินความจำเป็นและอาจล้มเหลว:
lsof -p $pid +r 1m%s -t | grep -qm1 $(date -v+${timeout}S +%s 2>/dev/null || echo INF)
บน UNIX เก่าอย่างน้อยหนึ่งlsof
อาร์กิวเมนต์จะ+r 1m%s
ล้มเหลว (แม้สำหรับ superuser):
lsof: can't read kernel name list.
m%s
เป็นข้อกำหนดรูปแบบการออก โพสต์โปรเซสเซอร์ที่เรียบง่ายไม่จำเป็นต้องใช้ ตัวอย่างเช่นคำสั่งต่อไปนี้รอบน PID 5959 นานถึงห้าวินาที:
lsof -p 5959 +r 1 | awk '/^=/ { if (T++ >= 5) { exit 1 } }'
ในตัวอย่างนี้ถ้า PID 5959 ออกจากสอดคล้องของตัวเองก่อนที่ห้าวินาทีผ่านไปเป็น${?}
0
ถ้าไม่${?}
กลับมา1
หลังจากห้าวินาที
นอกจากนี้ยังอาจจะมีมูลค่า noting ชัดแจ้งในที่+r 1
นี้1
เป็นช่วงโพล (วินาที) ดังนั้นจึงอาจมีการเปลี่ยนแปลงเพื่อให้เหมาะกับสถานการณ์