บริบท:
ผู้ใช้ระบุสคริปต์ที่กำหนดเองเพื่อเรียกใช้ สคริปต์เหล่านี้อาจเป็นประเภทใด ๆ เช่นสคริปต์เพื่อเริ่มโปรแกรม GUI หลาย ๆ บริการแบ็กเอนด์ ฉันไม่สามารถควบคุมวิธีการเขียนสคริปต์ได้ สคริปต์เหล่านี้สามารถเป็นประเภทการบล็อกเช่นการดำเนินการรอจนกว่ากระบวนการลูกทั้งหมด (โปรแกรมที่ทำงานตามลำดับ) ออก
#exaple of blocking script
echo "START"
first_program
second_program
echo "DONE"
หรือประเภทการปิดกั้นที่ไม่ใช่ประเภทที่แยกเด็กกระบวนการในพื้นหลังและออกจากสิ่งที่ชอบ
#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
ฉันพยายามทำอะไรให้สำเร็จ
ผู้ใช้ให้สคริปต์สามารถเป็นหนึ่งในสองประเภทข้างต้นหรือผสมกันทั้งสอง งานของฉันคือเรียกใช้สคริปต์และรอจนกว่ากระบวนการทั้งหมดที่เริ่มต้นโดยจะออกจากนั้นปิดโหนด หากเป็นประเภทการบล็อกกรณีง่าย ๆ คือรับ PID ของกระบวนการดำเนินการสคริปต์และรอจนกระทั่ง ps -ef | grep -ef PID ไม่มีรายการอีกต่อไป สคริปต์ที่ไม่มีการบล็อกคือสิ่งที่ทำให้ฉันเดือดร้อน
มีวิธีที่ฉันสามารถรับรายการ PID ของกระบวนการลูกทั้งหมดที่เกิดจากการเรียกใช้สคริปต์หรือไม่ คำแนะนำหรือคำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก
grep
ps –udummy_user
ดูที่กลุ่มกระบวนการ
ps
โดยไม่มีข้อโต้แย้งใด ๆ (ควรเป็นเพียงbash
และps
ในการเริ่มต้น) เริ่มสคริปต์ของคุณที่นั่น หลังจากเสร็จสิ้นรอจนกว่าจะps | wc -l
ถึงค่าที่คุณคาดหวัง
pid$(foo.sh; echo $!)
ที่จะให้ PID แก่foo.sh
คุณเพื่อให้คุณสามารถใช้งานps --ppid
ได้ มันจะใช้ได้ไหม