โซลูชันเหล่านี้ทั้งหมดได้รับการทดสอบใน Ubuntu 14.04:
โซลูชันที่ 1 (โดยใช้คำสั่ง ps):
เพียงเพิ่มคำตอบ Pierz ฉันอยากจะแนะนำ:
while ps axg | grep -vw grep | grep -w process_name > /dev/null; do sleep 1; done
ในกรณีนี้grep -vw grep
ตรวจสอบให้แน่ใจว่า grep ตรงกับ process_name เท่านั้นและไม่ใช่ grep เอง มันมีความได้เปรียบในการสนับสนุนกรณีที่ process_name ps axg
ไม่ได้อยู่ที่ท้ายบรรทัดที่ที่
โซลูชันที่ 2 (โดยใช้คำสั่งด้านบนและชื่อกระบวนการ):
while [[ $(awk '$12=="process_name" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
แทนที่ด้วยชื่อกระบวนการที่ปรากฏในprocess_name
top -n 1 -b
โปรดเก็บเครื่องหมายคำพูด
หากต้องการดูรายการกระบวนการที่คุณรอให้กระบวนการเสร็จสิ้นคุณสามารถเรียกใช้:
while : ; do p=$(awk '$12=="process_name" {print $0}' <(top -n 1 -b)); [[ $b ]] || break; echo $p; sleep 1; done
โซลูชัน 3 (โดยใช้คำสั่งด้านบนและ ID กระบวนการ):
while [[ $(awk '$1=="process_id" {print $0}' <(top -n 1 -b)) ]]; do sleep 1; done
แทนที่process_id
ด้วย ID กระบวนการของโปรแกรมของคุณ