หลังจากสคริปต์ทุบตีของฉันทำกับเซิร์ฟเวอร์ซีลีเนียมแล้วสคริปต์ก็จะฆ่าแบบนี้:
kill `ps -ef | grep selenium | awk '{ print $2 }'`
ในขณะที่มันใช้งานได้และมันจะฆ่าสคริปต์ซีลีเนียมมันก็พยายามที่จะฆ่ากระบวนการสำหรับgrep selenium
ดังนั้นตามเวลาที่หมายเลขกระบวนการกลับไปที่คำสั่ง kill กระบวนการจะหายไปดังนั้นจึงสิ้นสุดการสร้างข้อความแสดงข้อผิดพลาด (ในคำอื่น ๆ : มันจบลงด้วยการฆ่าสองกระบวนการหนึ่งในนั้นคือเซิร์ฟเวอร์ซีลีเนียมจริงอีกกระบวนการหนึ่งเป็นกระบวนการที่หายวับไปซึ่งเป็นผลข้างเคียงของวิธีที่ฉันทำตามคำสั่งนี้)
มีวิธีที่สง่างามกว่าในการฆ่ากระบวนการที่ไม่มีผลข้างเคียงนี้หรือไม่?
(FWIW หนึ่งความคิดที่ฉันมี: สคริปต์เดียวกันนี้เริ่มต้นขึ้นในซีลีเนียมก่อนหน้านี้ในสคริปต์ดังนั้นอาจจะมีวิธีที่ฉันสามารถจับ PID ได้เมื่อฉันเริ่มต้นซีลีเนียมฉันสามารถเก็บมันไว้และฆ่ามันโดยตรงแทนที่จะเป็น grepping ID กระบวนการปัญหาคือฉันไม่รู้วิธีรับ PID นั้นวิธีใช้ตัวแปรเพื่อเก็บมันและวิธีอ้างอิงในสคริปต์ในภายหลัง แต่วิธีนี้เป็นวิธีที่ดีกว่าหรือไม่)