ระบุตัวช่วย VPN ของ Mac ก่อนที่คุณจะสั่งหยุดโปรเซส
จับคู่โปรเซส VPN กับไฟล์เรียกทำงาน ตัวควบคุม และบทบาทเครือข่ายของมันก่อนจะหยุด จากนั้นใช้เส้นทางการหยุดของผู้เป็นเจ้าของแทนการใช้สัญญาณ
ให้ถือว่าข้อความเกี่ยวกับตัวช่วยที่ทำงานอยู่แล้วเป็นเบาะแสของวงจรชีวิต ไม่ใช่การอนุญาตให้เริ่มฆ่าโปรเซส ขั้นตอนที่อันตรายไม่ใช่การหยุดเอง แต่คือการระบุตัวตนก่อนหน้านั้น เพราะบน Mac เครื่องเดียวอาจมีองค์ประกอบหลายอย่างที่ชื่อคล้ายกัน และมีเพียงตัวเดียวเท่านั้นที่เป็นเจ้าของการเชื่อมต่อ ให้สร้างบันทึกอัตลักษณ์ก่อน จากนั้นจึงตัดสินใจว่าการหยุดเป็นสิ่งที่ถูกต้องหรือไม่
สร้างบันทึกอัตลักษณ์ก่อนลงมือ
ข้อเท็จจริงสี่ประการทำให้โปรเซสระบุตัวได้ ได้แก่ PID ปัจจุบันพร้อมเวลาเริ่ม ไฟล์เรียกทำงานและผลิตภัณฑ์ที่มันสังกัด ผู้ใช้หรือบริบทสิทธิ์ที่มันทำงานภายใต้ และสิ่งที่เริ่มมัน ps -o pid,ppid,user,etime,command -p 1234 ให้สามอย่างแรกในบรรทัดเดียว รวมถึงระยะเวลาที่โปรเซสมีชีวิตอยู่ ตัวตรวจสอบกิจกรรมแสดงข้อมูลเดียวกันในรูปแบบที่เข้าถึงง่ายกว่า เพิ่มตัวควบคุม ซึ่งหมายถึงแอปพลิเคชันหรือบริการที่รับผิดชอบการเริ่มและหยุดมัน เมื่อมีครบสี่อย่าง โปรเซสก็ไม่ใช่แค่ชื่ออีกต่อไป แต่กลายเป็นวัตถุที่ใช้เหตุผลได้
หากหนึ่งในสี่ไม่เป็นที่รู้จัก ให้หยุดตรงนั้น องค์ประกอบที่ไม่คุ้นเคยเป็นคำถามสำหรับผู้เผยแพร่หรือผู้ดูแลระบบ ไม่ใช่การทดลอง
PID ในบันทึกเก่าตอนนี้เป็นของคนอื่นแล้ว
ID ของโปรเซสถูกนำกลับมาใช้ใหม่ และตัวเลขที่คัดลอกจากบันทึกของเมื่อวานอาจชี้ไปยังสิ่งที่ไม่เกี่ยวข้องเลย เปรียบเทียบเวลาเริ่มกับตราเวลาในบันทึกก่อนสรุปใด ๆ เช่นเดียวกับชื่อสั้น สองบิลด์ของผลิตภัณฑ์เดียวอาจส่งตัวช่วยที่ชื่อเหมือนกันแต่จุดประสงค์ต่างกัน อัตลักษณ์คือทูเพิล ไม่ใช่ตัวเลขเพียงอย่างเดียว
แยกบทบาทก่อนแตะอย่างอื่น ไคลเอนต์ของการเชื่อมต่อเดียว ตัวช่วยที่ใช้ร่วมกันซึ่งให้บริการหลายแอปพลิเคชัน และเซิร์ฟเวอร์ที่รับเซสชันของผู้อื่น ล้วนดูเหมือนโปรเซสเบื้องหลังในรายการ มีเพียงตัวเดียวเท่านั้นที่หยุดได้โดยไม่มีผลที่คุณไม่ได้พิจารณา
หยุดผ่านเจ้าของ ไม่ใช่ผ่านสัญญาณ
เริ่มจากตัวควบคุมที่เป็นเจ้าของสิ่งนั้น ปุ่มตัดการเชื่อมต่อ คำสั่งหยุดที่บริการรองรับ หรือการกระทำของเอเจนต์จัดการเอง เส้นทางเหล่านี้จะทำการรื้อถอนตามที่ผลิตภัณฑ์คาดหวัง ซึ่งรวมถึงการลบเส้นทางและการปิดอุปกรณ์อุโมงค์ สัญญาณข้ามทั้งหมดนั้นและทิ้งสถานะไว้
ดูสิ่งที่เหลืออยู่หลังจากนั้น โปรเซสที่ยังคงอยู่ในหน่วยความจำอาจกำลังรอการเชื่อมต่อถัดไป ซึ่งเป็นการออกแบบ ไม่ใช่การหยุดที่ล้มเหลว
ทำไมตัวเฝ้าดูจึงเริ่มสิ่งที่คุณฆ่าใหม่
หากดีมอนเริ่มระบบหรือนโยบายเชื่อมต่ออัตโนมัติต้องการให้อุโมงค์ทำงาน การฆ่าโปรเซสไม่ได้สื่ออะไร ตัวเฝ้าดูเห็นการออกและเริ่มมันใหม่ บางครั้งก่อนที่คุณจะอ่านบันทึกจบ
หาตัวเฝ้าดูก่อนที่จะต่อสู้กับมัน launchctl list แสดงงานที่โหลดอยู่และเลเบลของงาน และงานที่มีการตั้งค่า keep-alive จะเริ่มใหม่เมื่อออกตามการออกแบบ การกระทำที่ถูกต้องคือเปลี่ยนเจตนา ถอนงาน ปิดนโยบายเชื่อมต่ออัตโนมัติ หรือขอให้ผู้ดูแลระบบทำ การบังคับปิดเป็นเครื่องมืออีกชนิดที่มีความหมายต่างออกไป และเป็นส่วนของขั้นตอนการกู้คืนที่มีเอกสารกำกับสำหรับโปรเซสที่ค้าง ไม่ใช่การจัดการการเชื่อมต่อตามปกติ
บันทึกเหตุการณ์วงจรชีวิต ไม่ใช่การฆ่า
เขียนอัตลักษณ์ขององค์ประกอบ เวอร์ชันไคลเอนต์ เหตุการณ์วงจรชีวิตครั้งแรกที่เกี่ยวข้อง และสิ่งที่คุณทำ เหตุการณ์สำคัญกว่าการกระทำ เพราะการมีสองอินสแตนซ์ปรากฏตอนเข้าสู่ระบบเป็นปัญหาลำดับการเริ่มที่จะเกิดซ้ำ บันทึกที่ระบุชื่อไฟล์เรียกทำงานและตัวควบคุมทำให้คนถัดไปทำซ้ำได้
จากนั้นตรวจสอบสถานะที่ตั้งใจ บริการที่ผู้ใช้ต้องการ และทรัพยากรส่วนตัวที่มันเข้าถึง หลีกเลี่ยงไปป์ไลน์ที่ค้นหาสตริงย่อยแล้วบังคับฆ่าทุกที่ที่ตรง เพราะมันทิ้งทั้งหมดข้างต้นและมักทำลายหลักฐานว่าทำไมจึงมีสองอินสแตนซ์ หากโปรเซสกลับมาอีก สิ่งที่พบคือข้อบกพร่องของการกำหนดค่าหรือลำดับ และการแก้ไขเป็นของเจ้าของพฤติกรรมการเริ่มของไคลเอนต์