ข้อควรรู้
- ใช้ นอนหลับ คำสั่งบวกเวลา; =วินาที , ม =นาที , ช =ชั่วโมง , หรือ d =วัน (เช่น นอน 5 วินาที หยุดสคริปต์ชั่วคราวเป็นเวลา 5 วินาที)
- ใช้ การนอนของมนุษย์ สำหรับข้อมูลเพิ่มเติม
บทความนี้อธิบายวิธีใช้คำสั่งลีนุกซ์สลีปเพื่อหยุดสคริปต์ทุบตีชั่วคราว และอื่นๆ ด้วยตัวของมันเอง คำสั่ง sleep ไม่มีประโยชน์มาก อย่างไรก็ตาม ในสคริปต์ สามารถใช้ได้หลายวิธี ตัวอย่างเช่น คุณสามารถใช้เพื่อหยุดสคริปต์ชั่วคราวก่อนที่จะลองคำสั่งที่ล้มเหลวในครั้งแรกอีกครั้ง
ตัวอย่างการใช้คำสั่ง Sleep
ลองนึกภาพคุณมีสคริปต์ที่ประมวลผลไฟล์ที่ดาวน์โหลดจากเซิร์ฟเวอร์อื่น สคริปต์ไม่ควรเริ่มกระบวนการคัดลอกจนกว่าไฟล์ทั้งหมดจะเสร็จสิ้นการดาวน์โหลด ขั้นตอนการดาวน์โหลดดำเนินการโดยสคริปต์แยกต่างหากที่ทำงานก่อนของคุณ
สคริปต์ที่คัดลอกไฟล์อาจมีการวนซ้ำเพื่อทดสอบว่าไฟล์ทั้งหมดดาวน์โหลดหรือไม่ (ทำได้โดยตรวจสอบว่าพบ 50 ไฟล์หรือไม่ก่อนเริ่มกระบวนการคัดลอก)
ไม่มีประเด็นใดในการทดสอบสคริปต์อย่างต่อเนื่องเนื่องจากใช้เวลาประมวลผล แต่คุณอาจหยุดชั่วคราวสักครู่ระหว่างการทดสอบแต่ละครั้งก่อนที่จะลองอีกครั้ง คำสั่ง sleep นั้นสมบูรณ์แบบในสถานการณ์เช่นนี้
วิธีใช้คำสั่งพักเครื่อง
ในการใช้คำสั่ง Linux sleep ให้ป้อนข้อมูลต่อไปนี้ในหน้าต่างเทอร์มินัล:
นอน 5 วินาที
คำสั่งด้านบนทำให้เทอร์มินัลหยุดชั่วคราวเป็นเวลา 5 วินาทีก่อนที่จะกลับไปที่บรรทัดคำสั่ง
คำสั่ง sleep ต้องใช้คีย์เวิร์ด sleep , ตามด้วยตัวเลขที่คุณต้องการหยุดชั่วคราวและหน่วยวัด
คุณสามารถระบุการหน่วงเวลาเป็นวินาที นาที ชั่วโมง หรือวันได้
- s :วินาที
- ม :นาที
- ช :ชั่วโมง
- ง :วัน
เมื่อต้องการหยุดสคริปต์ชั่วคราวเป็นเวลาหลายวัน ให้ใช้งาน cron เพื่อเรียกใช้สคริปต์ตามช่วงเวลาปกติ แทนที่จะให้สคริปต์ทำงานในเบื้องหลังเป็นเวลาหลายวัน
งาน cron คือคำสั่งหรือสคริปต์ของ Linux ที่คุณสามารถกำหนดเวลาให้ทำงานตามเวลาหรือวันที่กำหนดได้ สิ่งเหล่านี้มีประโยชน์สำหรับการทำงานซ้ำเป็นระยะเวลานาน
ตัวเลขสำหรับช่วงคำสั่ง sleep ไม่จำเป็นต้องเป็นจำนวนเต็ม คุณยังสามารถใช้ตัวเลขทศนิยมได้อีกด้วย
ตัวอย่างเช่น ไวยากรณ์ต่อไปนี้รวมเศษเสี้ยววินาที:
sleep 3.5s
ตัวอย่างการใช้คำสั่ง Sleep
สคริปต์ต่อไปนี้แสดงวิธีใช้คำสั่ง sleep เพื่อสร้างนาฬิกานับถอยหลังแบบใช้เทอร์มินัล:
#!/bin/bash
x=10
while [ $x -gt 0 ]
do
sleep 1s
clear
echo " $x วินาทีจนกว่าจะดับ"
x=$(( $x - 1 ))
done
สคริปต์นี้ทำงานอย่างไร:
- สคริปต์ตั้งค่าตัวแปร x เป็น 10
- while loop ยังคงวนซ้ำในขณะที่ค่าของ x มากกว่าศูนย์
- คำสั่ง sleep จะหยุดสคริปต์ชั่วคราว 1 วินาทีในแต่ละครั้งรอบๆ ลูป
- สคริปต์ที่เหลือจะล้างหน้าจอการวนซ้ำแต่ละครั้ง แสดงข้อความ "x วินาทีจนกว่าจะหมด" และลบ 1 ออกจากค่าของ x
หากไม่มีคำสั่ง sleep สคริปต์จะขยายและข้อความจะแสดงเร็วเกินไป
วิธีการใช้สวิตซ์คำสั่งพักเครื่อง
คำสั่ง sleep มีสวิตช์เพียงไม่กี่ตัว
--ช่วยเหลือ สวิตช์แสดงไฟล์วิธีใช้สำหรับคำสั่งสลีป คุณสามารถทำสิ่งเดียวกันได้โดยใช้คำสั่ง man ดังนี้:
คนนอนหลับ
--เวอร์ชัน สวิตช์แสดงเวอร์ชันของคำสั่งพักเครื่องที่ติดตั้งในระบบ
ข้อมูลที่ส่งคืนโดยสวิตช์ --version มีดังนี้:
- หมายเลขเวอร์ชัน
- รายละเอียดลิขสิทธิ์
- ใบอนุญาต
- ผู้เขียน
หยุดคำสั่งเทอร์มินัลชั่วคราวด้วยโหมดสลีป
อีกวิธีหนึ่งที่ดีสำหรับคำสั่ง sleep คือการหยุดคำสั่งที่คุณพิมพ์ในหน้าต่างเทอร์มินัลชั่วคราว
หากต้องการ คุณสามารถพิมพ์คำสั่งสองคำสั่งติดต่อกัน โดยรอให้คำสั่งแรกเสร็จสิ้นก่อนที่จะพิมพ์คำสั่งที่สอง
อย่างไรก็ตาม วิธีที่รวดเร็วกว่าคือการพิมพ์สองคำสั่งในบรรทัดเดียว โดยใช้คำสั่ง sleep ระหว่างแต่ละคำสั่ง:
$ cd /mydirectory/ && sleep 3 && ls
คำสั่งนี้ทำงานอย่างไร:
- cd /mydirectory/ คำสั่งเปลี่ยนไดเร็กทอรี
- The นอน 3 คำสั่งรอสามวินาทีเพื่อให้คำสั่ง cd เสร็จสิ้น
- The ls คำสั่งดำเนินการและแสดงเนื้อหาไดเรกทอรี
สำหรับตัวอย่างง่ายๆ เช่นนี้ คำสั่ง sleep ช่วยประหยัดเวลาเพียงเล็กน้อยเท่านั้น อย่างไรก็ตาม หากคุณมีรายการคำสั่งยาวๆ ความสามารถในการพิมพ์คำสั่งในบรรทัดเดียวจะช่วยประหยัดเวลา