ฉันพยายามเรียกใช้บางอย่างเช่น:
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/gnubin
PATH