วิธีหมดเวลาคำสั่งใน Bash โดยไม่มีการหน่วงเวลาโดยไม่จำเป็น

Withi Hmd Wela Kha Sang Ni Bash Doy Mimi Kar Hnwng Wela Doy Mi Capen



ใน Bash บางครั้งคุณอาจต้องเรียกใช้คำสั่งที่ใช้เวลานานในการดำเนินการให้เสร็จสิ้น และคุณอาจไม่ต้องการรอให้เสร็จสิ้นอย่างไม่มีกำหนด วิธีหนึ่งในการแก้ปัญหานี้คือการใช้คำสั่งหมดเวลาที่จำกัดระยะเวลาที่คำสั่งสามารถเรียกใช้ได้ บทความนี้จะกล่าวถึงวิธีการหมดเวลาคำสั่งใน Bash โดยไม่ชักช้าโดยไม่จำเป็น

หมดเวลาคำสั่งใน Bash

หากต้องการหมดเวลาคำสั่งใน Bash เราสามารถใช้ 'หมดเวลา' สั่งการ. คำสั่ง “timeout” ไม่สามารถใช้ได้ตามค่าเริ่มต้นในทุกระบบ แต่สามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจบนลีนุกซ์ส่วนใหญ่ นี่คือไวยากรณ์ของคำสั่ง “timeout”:







หมดเวลา [ ตัวเลือก ] คำสั่งระยะเวลา [ อาร์จี ]


ที่นี่ 'OPTION' เป็นอาร์กิวเมนต์ทางเลือกที่ระบุลักษณะการทำงานของคำสั่งหมดเวลา 'DURATION' คือเวลาจำกัดสำหรับคำสั่งที่จะรัน และ 'COMMAND [ARG]' คือคำสั่งและอาร์กิวเมนต์ที่เราต้องการเรียกใช้



ตัวอย่างเช่น สมมติว่าเราต้องการรันคำสั่ง 'sleep' เป็นเวลา 5 วินาที แต่เราต้องการหมดเวลาคำสั่งหลังจากผ่านไป 3 วินาที และนี่คือตัวอย่างเชลล์สคริปต์:



#!/bin/bash
เสียงสะท้อน 'กำลังเริ่มคำสั่งสลีปโดยหมดเวลา 3 วินาที...'
หมดเวลา 3 วินาที นอน 5 วินาที
เสียงสะท้อน 'คำสั่งสลีปเสร็จสิ้น'


ที่นี่ฉันได้ระบุระยะเวลาของการหมดเวลาเป็น 3 วินาที และระยะเวลาของคำสั่ง 'สลีป' เป็น 5 วินาที คำสั่ง “หมดเวลา” จะหยุดคำสั่ง “สลีป” หลังจากผ่านไป 3 วินาที แม้ว่าปกติแล้วคำสั่ง “สลีป” จะทำงานเป็นเวลา 5 วินาทีก็ตาม






เพื่อป้องกันการหน่วงเวลาโดยไม่จำเป็นเมื่อใช้คำสั่ง “หมดเวลา” เราสามารถใช้ตัวเลือก “-k” ตัวเลือก '-k' ระบุสัญญาณที่จะส่งไปยังคำสั่งหากเกินขีดจำกัดการหมดเวลา สัญญาณนี้จะทำให้คำสั่งยุติทันที แทนที่จะรอให้เสร็จสิ้นอย่างงดงาม

ตัวอย่างเช่น สมมติว่าเราต้องการรันคำสั่ง 'sleep' เป็นเวลาห้าวินาที แต่เราต้องการหมดเวลาคำสั่งหลังจากผ่านไปสามวินาที และส่งสัญญาณ SIGINT หากเกินขีดจำกัดการหมดเวลา เราสามารถทำได้โดยใช้คำสั่งต่อไปนี้:



#!/bin/bash
เสียงสะท้อน 'การเริ่มคำสั่งสลีปโดยหมดเวลา 3 วินาทีและสัญญาณ SIGINT หลังจาก 2 วินาที'
หมดเวลา -k 2s 3s sleep 5s
เสียงสะท้อน '
นอน สั่งการ ที่เสร็จเรียบร้อย. '


ที่นี่ ฉันได้ระบุระยะเวลาการหมดเวลาเป็น 3 วินาที และสัญญาณที่จะส่งเป็น SIGINT หากเกินขีดจำกัดการหมดเวลา ตัวเลือก “-k 2s” ระบุว่าควรส่งสัญญาณ SIGINT หลังจากหมดเวลาจำกัดสองวินาที

บทสรุป

หมดเวลาคำสั่งใน Bash เป็นเครื่องมือที่มีประโยชน์ที่สามารถช่วยให้คุณเรียกใช้คำสั่งได้อย่างมีประสิทธิภาพมากขึ้นและป้องกันความล่าช้าที่ไม่จำเป็น เมื่อใช้คำสั่ง 'หมดเวลา' และตัวเลือก '-k' คุณสามารถจำกัดระยะเวลาที่คำสั่งสามารถเรียกใช้และส่งสัญญาณเพื่อยุติคำสั่งได้ทันทีหากเกินขีดจำกัดการหมดเวลา ซึ่งจะช่วยให้คุณประหยัดเวลาและเรียกใช้สคริปต์ได้อย่างมีประสิทธิภาพมากขึ้น