รอคำสั่งใน Linux

Wait Command Linux



รอ เป็นคำสั่งในตัวของ Linux ที่รอดำเนินการกระบวนการทำงานใดๆ ให้เสร็จสิ้น รอ คำสั่งใช้กับ ID กระบวนการหรือรหัสงานเฉพาะ เมื่อหลายโปรเซสทำงานอยู่ในเชลล์ เชลล์ปัจจุบันจะรู้จักเฉพาะ id โปรเซสของคำสั่งสุดท้ายเท่านั้น หากดำเนินการคำสั่ง wait ในครั้งนี้ คำสั่งนั้นจะใช้กับคำสั่งสุดท้าย หากไม่ได้ระบุรหัสกระบวนการหรือรหัสงานด้วยคำสั่ง wait มันจะรอให้กระบวนการลูกปัจจุบันทั้งหมดเสร็จสิ้นและส่งคืนสถานะการออก

ค่าสถานะการออกของคำสั่ง wait ขึ้นอยู่กับคำสั่งที่ระบุโดยตัวถูกดำเนินการล่าสุดที่ระบุ เมื่อกระบวนการใดสิ้นสุดอย่างผิดปกติ สถานะการออกจะมากกว่า 128 และจะแตกต่างจากค่าสถานะการออกของคำสั่งอื่น รอ คำสั่งออกด้วยค่า 0 เมื่อเรียกใช้โดยไม่มีตัวถูกดำเนินการ และเชลล์ปัจจุบันรู้จัก ID กระบวนการทั้งหมดแล้ว หากคำสั่ง wait ตรวจพบข้อผิดพลาดใดๆ คำสั่งจะคืนค่าตั้งแต่ 1 ถึง 126 หากไม่ทราบ id กระบวนการสุดท้าย คำสั่ง wait จะออกด้วยค่า 127 วิธีใช้งาน wait คำสั่งใน Linux จะแสดงอยู่ในบทช่วยสอนนี้







ตัวอย่างที่ 1: การใช้คำสั่ง wait สำหรับหลายโปรเซส

หลังจากรันสคริปต์ต่อไปนี้ สองโปรเซสจะทำงานในเบื้องหลัง และ id โปรเซสของคำสั่ง echo แรกจะถูกเก็บไว้ในตัวแปร $process_id เมื่อดำเนินการคำสั่ง wait ด้วย $process_id คำสั่งถัดไปจะรอเพื่อให้งานของคำสั่ง echo แรกเสร็จสิ้น คำสั่ง wait ที่สองใช้กับ ' $! ’ และนี่ระบุรหัสกระบวนการของกระบวนการที่ทำงานล่าสุด ' $? ’ ใช้เพื่ออ่านค่าสถานะของคำสั่ง wait



#!/bin/bash
โยนออก 'กำลังทดสอบรอ command1' &
process_id=$!
โยนออก 'กำลังทดสอบรอ command2' &
รอ $process_id
โยนออกงาน1ออกจากสถานะ$?
รอ $!
โยนออกงาน2ออกจากสถานะ$?

เอาท์พุท:



$ทุบตีwait1.sh





ตัวอย่างที่ 2: ทดสอบคำสั่ง wait หลังจากใช้คำสั่ง kill

ในสคริปต์ต่อไปนี้ คำสั่ง wait จะถูกดำเนินการหลังจากสิ้นสุดกระบวนการ คำสั่ง sleep กำลังทำงานเป็นกระบวนการพื้นหลัง และคำสั่ง kill ถูกดำเนินการเพื่อยุติกระบวนการที่ทำงานอยู่ หลังจากนั้นคำสั่ง wait จะถูกดำเนินการด้วยรหัสกระบวนการของกระบวนการที่ยุติ ผลลัพธ์จะแสดง ID กระบวนการของกระบวนการที่ยุติ

#!/bin/bash
โยนออก 'ทดสอบคำสั่งรอ'
นอน ยี่สิบ &
pid=$!
ฆ่า $pid
รอ $pid
โยนออก $pidถูกยกเลิก

เอาท์พุท:



$ทุบตีwait2.sh

ตัวอย่างที่ 3: ตรวจสอบค่าสถานะการออก

ในสคริปต์ต่อไปนี้ ฟังก์ชัน ตรวจสอบ() ถูกเรียกโดยค่าอาร์กิวเมนต์สองค่า มีการกล่าวถึงในตอนต้นของบทช่วยสอนว่าถ้า wait command ดำเนินการสำเร็จ ค่า exit จะเป็น 0 และถ้า wait command ตรวจพบข้อผิดพลาด จะส่งกลับค่าใด ๆ ระหว่าง 1 ถึง 126 หลังจากรันสคริปต์ ถ้าคุณส่ง 0 เป็นอาร์กิวเมนต์ที่สอง ค่าแล้ว wait คำสั่งยุติสำเร็จและถ้าคุณส่งค่าใด ๆ ที่มากกว่าศูนย์จะยุติไม่สำเร็จ

#!/bin/bash
การทำงานตรวจสอบ()
{
โยนออก 'นอนหลับเป็นเวลา 1 วินาที'
นอน $ 1
ทางออก $ 2
}
ตรวจสอบ$ 1 $ 2 &
NS=$!
โยนออก 'กำลังตรวจสอบสถานะ'
รอ $ b && โยนออกตกลง|| โยนออกไม่โอเค

เอาท์พุท:

$ทุบตีwait3.sh3 0
$ทุบตีwait3.sh3 5

หวังว่าบทช่วยสอนนี้จะช่วยให้เรียนรู้คำสั่ง wait ได้อย่างถูกต้อง มีคำสั่งอื่นใน Linux ชื่อ นอน เพื่อรอเป็นจำนวนครั้ง แต่มีข้อแตกต่างบางประการระหว่างคำสั่งเหล่านี้ หากคุณสนใจที่จะทราบเกี่ยวกับ คำสั่งนอน จากนั้นคุณสามารถเยี่ยมชมลิงค์นี้