ให้ถือว่าข้อความเกี่ยวกับตัวช่วยที่ทำงานอยู่แล้วเป็นเบาะแสของวงจรชีวิต ไม่ใช่การอนุญาตให้เริ่มฆ่าโปรเซส ขั้นตอนที่อันตรายไม่ใช่การหยุดเอง แต่คือการระบุตัวตนก่อนหน้านั้น เพราะบน Mac เครื่องเดียวอาจมีองค์ประกอบหลายอย่างที่ชื่อคล้ายกัน และมีเพียงตัวเดียวเท่านั้นที่เป็นเจ้าของการเชื่อมต่อ ให้สร้างบันทึกอัตลักษณ์ก่อน จากนั้นจึงตัดสินใจว่าการหยุดเป็นสิ่งที่ถูกต้องหรือไม่

สร้างบันทึกอัตลักษณ์ก่อนลงมือ

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

หากหนึ่งในสี่ไม่เป็นที่รู้จัก ให้หยุดตรงนั้น องค์ประกอบที่ไม่คุ้นเคยเป็นคำถามสำหรับผู้เผยแพร่หรือผู้ดูแลระบบ ไม่ใช่การทดลอง

PID ในบันทึกเก่าตอนนี้เป็นของคนอื่นแล้ว

ID ของโปรเซสถูกนำกลับมาใช้ใหม่ และตัวเลขที่คัดลอกจากบันทึกของเมื่อวานอาจชี้ไปยังสิ่งที่ไม่เกี่ยวข้องเลย เปรียบเทียบเวลาเริ่มกับตราเวลาในบันทึกก่อนสรุปใด ๆ เช่นเดียวกับชื่อสั้น สองบิลด์ของผลิตภัณฑ์เดียวอาจส่งตัวช่วยที่ชื่อเหมือนกันแต่จุดประสงค์ต่างกัน อัตลักษณ์คือทูเพิล ไม่ใช่ตัวเลขเพียงอย่างเดียว

แยกบทบาทก่อนแตะอย่างอื่น ไคลเอนต์ของการเชื่อมต่อเดียว ตัวช่วยที่ใช้ร่วมกันซึ่งให้บริการหลายแอปพลิเคชัน และเซิร์ฟเวอร์ที่รับเซสชันของผู้อื่น ล้วนดูเหมือนโปรเซสเบื้องหลังในรายการ มีเพียงตัวเดียวเท่านั้นที่หยุดได้โดยไม่มีผลที่คุณไม่ได้พิจารณา

หยุดผ่านเจ้าของ ไม่ใช่ผ่านสัญญาณ

เริ่มจากตัวควบคุมที่เป็นเจ้าของสิ่งนั้น ปุ่มตัดการเชื่อมต่อ คำสั่งหยุดที่บริการรองรับ หรือการกระทำของเอเจนต์จัดการเอง เส้นทางเหล่านี้จะทำการรื้อถอนตามที่ผลิตภัณฑ์คาดหวัง ซึ่งรวมถึงการลบเส้นทางและการปิดอุปกรณ์อุโมงค์ สัญญาณข้ามทั้งหมดนั้นและทิ้งสถานะไว้

ดูสิ่งที่เหลืออยู่หลังจากนั้น โปรเซสที่ยังคงอยู่ในหน่วยความจำอาจกำลังรอการเชื่อมต่อถัดไป ซึ่งเป็นการออกแบบ ไม่ใช่การหยุดที่ล้มเหลว

ทำไมตัวเฝ้าดูจึงเริ่มสิ่งที่คุณฆ่าใหม่

หากดีมอนเริ่มระบบหรือนโยบายเชื่อมต่ออัตโนมัติต้องการให้อุโมงค์ทำงาน การฆ่าโปรเซสไม่ได้สื่ออะไร ตัวเฝ้าดูเห็นการออกและเริ่มมันใหม่ บางครั้งก่อนที่คุณจะอ่านบันทึกจบ

หาตัวเฝ้าดูก่อนที่จะต่อสู้กับมัน launchctl list แสดงงานที่โหลดอยู่และเลเบลของงาน และงานที่มีการตั้งค่า keep-alive จะเริ่มใหม่เมื่อออกตามการออกแบบ การกระทำที่ถูกต้องคือเปลี่ยนเจตนา ถอนงาน ปิดนโยบายเชื่อมต่ออัตโนมัติ หรือขอให้ผู้ดูแลระบบทำ การบังคับปิดเป็นเครื่องมืออีกชนิดที่มีความหมายต่างออกไป และเป็นส่วนของขั้นตอนการกู้คืนที่มีเอกสารกำกับสำหรับโปรเซสที่ค้าง ไม่ใช่การจัดการการเชื่อมต่อตามปกติ

บันทึกเหตุการณ์วงจรชีวิต ไม่ใช่การฆ่า

เขียนอัตลักษณ์ขององค์ประกอบ เวอร์ชันไคลเอนต์ เหตุการณ์วงจรชีวิตครั้งแรกที่เกี่ยวข้อง และสิ่งที่คุณทำ เหตุการณ์สำคัญกว่าการกระทำ เพราะการมีสองอินสแตนซ์ปรากฏตอนเข้าสู่ระบบเป็นปัญหาลำดับการเริ่มที่จะเกิดซ้ำ บันทึกที่ระบุชื่อไฟล์เรียกทำงานและตัวควบคุมทำให้คนถัดไปทำซ้ำได้

จากนั้นตรวจสอบสถานะที่ตั้งใจ บริการที่ผู้ใช้ต้องการ และทรัพยากรส่วนตัวที่มันเข้าถึง หลีกเลี่ยงไปป์ไลน์ที่ค้นหาสตริงย่อยแล้วบังคับฆ่าทุกที่ที่ตรง เพราะมันทิ้งทั้งหมดข้างต้นและมักทำลายหลักฐานว่าทำไมจึงมีสองอินสแตนซ์ หากโปรเซสกลับมาอีก สิ่งที่พบคือข้อบกพร่องของการกำหนดค่าหรือลำดับ และการแก้ไขเป็นของเจ้าของพฤติกรรมการเริ่มของไคลเอนต์

บทความที่เกี่ยวข้อง