Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

ใช้คำสั่ง sleep หยุด BASH Script ชั่วคราวใน Linux

สรุปคำสั่งหลัก

  • sleep เวลาหน่วย เช่น sleep 5s หยุด 5 วินาที
  • หน่วย: s=วินาที, m=นาที, h=ชั่วโมง, d=วัน
  • ดูรายละเอียด: man sleep

คำสั่ง sleep ใช้เดี่ยวไม่ค่อยมีประโยชน์ แต่ในสคริปต์ (script) มีประโยชน์มาก เช่น หยุดรอให้คำสั่งอื่นเสร็จ, หน่วงเวลาระหว่าง retry, หรือทำนาฬิกานับถอยหลัง

ตัวอย่างการใช้งานจริง

สคริปต์คัดลอกไฟล์ที่ดาวน์โหลดจากเซิร์ฟเวอร์อื่น ไม่ควรเริ่มคัดลอกจนกว่าจะดาวน์โหลดเสร็จ สคริปต์ดาวน์โหลดรันก่อน สคริปต์คัดลอกอาจมีลูปเช็คว่าไฟล์ครบ 50 ไฟล์หรือยัง

แทนที่จะเช็คซ้ำตลอดเวลา (กิน CPU) ให้ sleep หน่วงเวลา ระหว่างแต่ละรอบเช็ค → sleep เหมาะที่สุด

รูปแบบการใช้งาน

sleep 5s

หยุด 5 วินาที แล้วคืน prompt

รูปแบบ: sleep จำนวนหน่วย

  • s - วินาที
  • m - นาที
  • h - ชั่วโมง
  • d - วัน

หมายเหตุ: หน่วงหลายวัน ควรใช้ cron job (排程รันซ้ำ) แทนการรันสคริปต์ค้างพื้นหลังหลายวัน

ตัวเลขไม่ต้องเป็นจำนวนเต็ม ใช้ทศนิยมได้:

sleep 3.5s

ตัวอย่างสคริปต์: นาฬิกานับถอยหลัง (Countdown)

#!/bin/bash
x=10
while [ $x -gt 0 ]
do
  sleep 1s
  clear
  echo "$x seconds until blast off"
  x=$(( $x - 1 ))
done

การทำงาน:

  • ตั้ง x = 10
  • while loop ทำงานตลอดที่ x > 0
  • sleep 1s หน่วง 1 วินาทีแต่ละรอบ
  • clear หน้าจอ, แสดงข้อความ, ลด x ลง 1

ไม่มี sleep สคริปต์จะวิ่งจบทันที ข้อความกระพริบไม่ได้อ่าน

Switches ของ sleep

sleep มี switch น้อย:

  • --help แสดงช่วยเหลือ (เหมือน man sleep)
  • --version แสดงเวอร์ชัน, ลิขสิทธิ์, สัญญา, ผู้เขียน

ใช้ sleep หน่วงคำสั่งใน Terminal

พิมพ์คำสั่งหลายคำสั่งบรรทัดเดียว คั่นด้วย && ใส่ sleep ระหว่างทาง:

$ cd /mydirectory/ && sleep 3 && ls

ทำงาน:

  • cd /mydirectory/ เปลี่ยนโฟลเดอร์
  • sleep 3 รอ 3 วินาที (ให้ cd เสร็จ)
  • ls แสดงไฟล์ในโฟลเดอร์นั้น

ตัวอย่างง่ายๆ ประหยัดเวลาเล็กน้อย แต่คำสั่งยาวๆ หลายคำสั่ง จะสะดวกกว่าพิมพ์ทีละบรรทัดรอจบ