ฉันพยายามเรียกใช้บางอย่างเช่น:
sudo dhclient $wifi || otherFunctionปัญหาคือเมื่อdhclientล้มเหลวมันแค่แฮงค์แทนที่จะทิ้งข้อผิดพลาด
ฉันจะเขียนใหม่ข้างต้นเพื่อให้dhclientถูกฆ่าและotherFunctionได้รับการเรียกถ้าdhclientไม่เสร็จใน 60 วินาที?
ฉันพยายามเรียกใช้บางอย่างเช่น:
sudo dhclient $wifi || otherFunctionปัญหาคือเมื่อdhclientล้มเหลวมันแค่แฮงค์แทนที่จะทิ้งข้อผิดพลาด
ฉันจะเขียนใหม่ข้างต้นเพื่อให้dhclientถูกฆ่าและotherFunctionได้รับการเรียกถ้าdhclientไม่เสร็จใน 60 วินาที?
คำตอบ:
sudo timeout 60 dhclient $wifi || otherFunctionตัวอย่าง:
sudo timeout 3 sleep 5 || echo finished earlyสิ่งนี้ใช้ยูทิลิตี้การหมดเวลาที่จัดทำโดยแพ็คเกจ GNU coreutils บน Linux
timeoutสำหรับ MacOS: stackoverflow.com/a/21118126/451480
                    timeoutฆ่าคำสั่ง (ตรงข้ามกับคำสั่งที่ล้มเหลวด้วยเหตุผลอื่น ๆ ) ให้ตรวจสอบสถานะการออก 124
                    timeoutใช้
timeout 2 sleep 1
echo $?
0
timeout 1 sleep 2
echo $?
124ใช้timeoutบรรจุเป็นgtimeoutกับcoreutilsพอร์ตในbrew:
brew install coreutils
gtimeout --helpที่จะทำงานร่วมกับคุณใน/usr/local/bin PATHหากคุณต้องการที่จะใช้timeoutเป็นชื่อเดิมเพิ่มที่คุณ/usr/local/opt/coreutils/libexec/gnubinPATH