ไม่ใช่สิ่งที่ฉันกำลังมองหา แต่พบวิธีวงเวียนเพื่อให้บรรลุสิ่งที่ฉันต้องการ เผื่อว่าจะช่วยคนอื่นได้:
แท็บเทอร์มินัลในกรณีของฉันคือโหนดเซิร์ฟเวอร์ที่ส่งออกบันทึกในขณะที่กำลังทำงาน ดังนั้นมันจึงยังคงเปิดอยู่ในขณะที่กระบวนการทำงานอยู่ อย่างน้อยบน Ubuntu คุณสามารถตั้งค่าหน้าต่างให้ปิดตัวเองตามการตั้งค่าโปรไฟล์เทอร์มินัล:
ซึ่งหมายความว่าฉันสามารถฆ่ากระบวนการและแท็บจะปิด เพื่อทำสิ่งนี้ให้สำเร็จ ฉันได้เพิ่มคำสั่งที่เพิ่มเข้าไปในสคริปต์ที่ฉันใช้เมื่อสลับโปรเจ็กต์:
ps -aux | grep "ชื่อคำสั่งที่นี่" | grep -v "grep" | awk '{พิมพ์ $2}' | xargs ฆ่า
หรือคุณสามารถฆ่ากระบวนการที่ครอบครองพอร์ตเฉพาะซึ่งใช้ได้ผลในกรณีของฉัน:
ฆ่า $(lsof -t -i:7777)
แก้ไข:
ในกรณีที่คุณต้องการตบกระบวนการฆ่าก่อนสคริปต์อื่น ๆ เช่นฉัน คุณอาจต้องการฟังก์ชันที่ตรวจสอบเพื่อดูว่ามีกระบวนการที่จะฆ่าหรือไม่:
คิลปิด() {
PID=`ps -aux | grep "ชื่อคำสั่งที่นี่" | grep -v "grep" | awk '{พิมพ์ $2}'`;
ถ้า [ ! -z "$PID" ]
แล้ว
echo "ฆ่าชื่อคำสั่งที่นี่ - $PID";
สะท้อน $PID | xargs ฆ่า;
ไฟ
}