สิ่งที่ฉันทำเมื่อฉันได้รับคำสั่งให้เรียกใช้และต้องการบันทึกเฉพาะในกรณีที่เกิดความล้มเหลวเป็นดังนี้ (นำหน้าด้วยเชลล์ comamnd เช่น/bin/sh -c '...'
ในกรณีที่ผู้ริเริ่มไม่ได้ใช้การsystem
เรียกหรือรันคำสั่งโดยตรงโดยไม่มีเชลล์) :
command 2&>1 > command-log.txt || cat command-log.txt
การดำเนินการนี้จะเปลี่ยนเส้นทางข้อผิดพลาดและเอาต์พุตมาตรฐานไปยังไฟล์และแสดงเนื้อหาของไฟล์ในกรณีที่เกิดความล้มเหลวเท่านั้น หากคำสั่งนั้นละเอียดมากและคุณไม่ต้องการเก็บบันทึกไว้เมื่อไรคุณสามารถไปที่:
command 2&>1 > command-log.txt && rm command-log.txt || cat command-log.txt
เสนอราคา&&
และ||
การใช้งานจากsh manpage :
สัญลักษณ์ && (||) ทำให้รายการต่อไปนี้จะถูกดำเนินการเฉพาะถ้าขั้นตอนก่อนหน้านี้ส่งคืนค่าศูนย์ (ไม่ใช่ศูนย์)
นั่นอาจไม่ใช่วิธีที่แปลกที่สุดที่จะทำด้วย ansible แต่มีข้อดีของการพกพาได้ดีกับระบบการจัดการการกำหนดค่าใด ๆ ที่ให้ความสามารถในการแสดงคำสั่ง stdout