Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

คุณเคยเจอสถานการณ์ที่ต้องหยุด Process ที่กำลังทำงานบน Port เฉพาะบนเครื่อง Linux ของคุณหรือไม่?

คุณอาจกังวลว่าแอปพลิเคชันที่คุณกำลังรันทำงานผิดปกติ (Misbehaving) หรือ佔據ทรัพยากรเครือข่าย (Network Resources) หรือ CPU ท้องถิ่น แอปพลิเคชันแบบนั้นอาจเป็นภัยคุกคามด้านความปลอดภัย (Security Threat) ที่คุณต้องกำจัด

ไม่ว่าจะเป็นเหตุผลอะไร คุณสามารถใช้คำสั่ง fuser, lsof, และ netstat จากเทอร์มินัล (Terminal) (พร้อมกับ kill) เพื่อช่วยคุณค้นหาและยุติ (Kill) Process Linux ใดๆ ที่ใช้ Port Number คำสั่งเหล่านี้จะทำงานบนระบบปฏิบัติการ Linux ส่วนใหญ่ รวมถึง Ubuntu

วิธียุติ Linux Process โดยใช้คำสั่ง fuser

หนึ่งในวิธีที่ง่ายที่สุดในการยุติ Process โดยใช้ Port Number คือการใช้คำสั่ง fuser คำสั่งเทอร์มินัล Linux นี้สามารถแสดงรายการ (List) หรือยุติ (Kill) Process ที่เข้าถึงไฟล์หรือ Socket หากแอปทำงานพร้อมกิจกรรมเครือข่าย (Network Activity) (และดังนั้นใช้ Port เปิดอยู่) มันอาจทำหนึ่งในสองสิ่งนี้

ก่อนดำเนินการ คุณต้องแน่ใจว่าคุณสบายใจกับการใช้ Command Line Terminal บนคอมพิวเตอร์ Linux ของคุณ

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

เพื่อแสดงรายการ Process ที่ใช้ Port Number โดยใช้ fuser คุณสามารถใช้ไวยากรณ์ (Syntax) ต่อไปนี้:

fuser -n protocol port

ในตัวอย่างนี้ protocol สามารถเป็น tcp หรือ udp ส่วน port คือหมายเลข Port ที่คุณต้องการตรวจสอบ ตัวอย่างเช่น เพื่อดูว่า Process ไหนใช้ TCP Port 80 คุณสามารถรัน:

fuser -n tcp 80

สิ่งนี้จะพิมพ์ Process IDs (PIDs) ของ Process ที่ใช้ Port นั้น

เพื่อยุติ Process เหล่านั้น คุณสามารถเพิ่มตัวเลือก -k ให้กับ fuser จะส่งสัญญาณ SIGTERM ให้แต่ละ Process ขอให้พวกมันยุติอย่างสงบ (Gracefully) ตัวอย่างเช่น:

fuser -k -n tcp 80

สิ่งนี้จะยุติ Process ทั้งหมดที่ใช้ TCP Port 80

หากบาง Process ไม่ตอบสนองต่อ SIGTERM คุณสามารถใช้ -KILL แทน -k จะส่งสัญญาณ Kill (SIGKILL) ซึ่งช่วยบังคับให้ Process ที่กำลังทำงานอยู่ที่คุณระบุ ยุติทันที อย่างไรก็ตาม อาจทำให้สูญเสียข้อมูลหรือเสียหาย (Data Loss or Corruption) ดังนั้นใช้ด้วยความระมัดระวัง ตัวอย่างเช่น:

fuser -KILL -n tcp 80

สิ่งนี้จะยุติ Process ทั้งหมดที่ใช้ TCP Port 80 อย่างบังคับ หากคุณเจอปัญหา ให้รันคำสั่งเหล่านี้ในฐานะ Super User (ใช้คำสั่ง sudo) หรือใช้ Root User แทน

วิธียุติ Linux Process โดยใช้คำสั่ง lsof

อีกวิธีหนึ่งในการยุติ Process โดยใช้ Port Number บน Linux PC คือการใช้คำสั่ง lsof คำสั่งนี้สามารถแสดงรายการไฟล์และ Socket ที่เปิดอยู่บนระบบของคุณได้

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

เพื่อแสดงรายการ Process ที่ใช้ Port Number เฉพาะ คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

lsof -i protocol:port

เหมือนเดิม protocol สามารถเป็น tcp หรือ udp ส่วน port คือหมายเลข Port ที่คุณต้องการตรวจสอบ ตัวอย่างเช่น เพื่อดูว่า Process ไหนใช้ TCP Port 53 (มักใช้สำหรับ DNS Requests) คุณสามารถรันคำสั่งนี้:

lsof -i tcp:53

สิ่งนี้จะพิมพ์ข้อมูลบางอย่างเกี่ยวกับแต่ละ Process ที่ใช้ Port นั้น รวมถึง PID

เพื่อยุติ Process เหล่านั้น คุณสามารถใช้ตัวเลือก -t กับ lsof จะพิมพ์แค่ PID ของ Process โดยไม่มีข้อมูลอื่น คุณสามารถส่ง Output นี้ไปยังคำสั่ง kill พร้อมตัวเลือกสัญญาณ (Signal Option) ใดๆ ตัวอย่างเช่น:

kill $(lsof -t -i tcp:53)

สิ่งนี้จะส่งสัญญาณ SIGTERM (ค่าเริ่มต้น) ให้ Process ทั้งหมดที่ใช้ TCP Port 53

หากบาง Process ไม่ตอบสนองต่อสัญญาณ SIGTERM เหมือนเดิม คุณสามารถใช้ -9 แทนที่จะไม่ใส่อะไรหลัง kill จะส่งสัญญาณ SIGKILL เหมือนเดิม บังคับให้ยุติทันที แต่ก็อาจทำให้สูญเสียข้อมูลหรือเสียหาย ตัวอย่างเช่น:

kill -9 $(lsof -t -i tcp:53)

สิ่งนี้จะส่งสัญญาณ SIGKILL อย่างบังคับให้ Process ทั้งหมดที่ใช้ TCP Port 53

วิธียุติ Linux Process โดยใช้คำสั่ง netstat

คุณยังสามารถใช้คำสั่ง netstat เพื่อติดตาม Process ที่กำลังทำงานบน Linux PC โดยใช้ Port เครือข่ายที่ Active และ Open netstat ให้คุณดูการเชื่อมต่อเครือข่ายและสถิติบนระบบ ช่วยให้คุณระบุ Process ที่มีปัญหาได้

เพื่อแสดงรายการ Process ที่ใช้ Port Number พร้อม PID คุณต้องเพิ่มสองตัวเลือก: -p ซึ่งแสดง PID และ -l ซึ่งแสดง Listening Sockets เท่านั้น

คุณยังต้องระบุ Protocol (tcp, udp ฯลฯ) และเลือกกรองตาม State (LISTEN ฯลฯ) ได้ ตัวอย่างเช่น เพื่อดูว่า Process TCP ใดกำลัง Listen บน Port ใดๆ คุณสามารถรัน:

netstat -p tcp -l

สิ่งนี้จะพิมพ์ข้อมูลเกี่ยวกับ TCP Socket แต่ละตัวที่ Listen บน Port ใดๆ รวมถึง PID

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

เพื่อกรองตาม Port เฉพาะ คุณต้องเพิ่มตัวเลือกอีกตัว: -n ซึ่งแสดงที่อยู่เป็นตัวเลข (Numerical Addresses) แทนชื่อ คุณยังต้องระบุรูปแบบที่อยู่ที่แน่นอน: [protocol][@hostname|hostaddr][:service|port]

ตัวอย่างเช่น เพื่อดูว่า Process TCP ใด Listen บน Port 80 คุณสามารถรัน:

netstat -p tcp -l -n 80

สิ่งนี้จะพิมพ์ข้อมูลเกี่ยวกับ TCP Socket แต่ละตัวที่ Listen บน Port 8080 รวมถึง PID

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

เพื่อยุติ Process เหล่านั้น คุณสามารถใช้คำสั่ง kill พร้อมตัวเลือกสัญญาณใดๆ ที่คุณต้องการ และ PID ที่ได้จาก netstat ตัวอย่างเช่น:

kill 1234 5678

สิ่งนี้จะส่งสัญญาณ SIGTERM (ค่าเริ่มต้น) ให้ Process ด้วย PID 1234 และ 5678

หากบาง Process ไม่ตอบสนองต่อสัญญาณ SIGTERM เหมือนเดิม คุณสามารถใช้ -9 แทนที่จะไม่ใส่อะไรหลัง kill จะส่งสัญญาณ SIGKILL เหมือนเดิม บังคับให้ยุติทันที แต่อาจทำให้สูญเสียข้อมูลหรือเสียหาย ตัวอย่างเช่น:

kill -9 1234 5678

สิ่งนี้จะส่งสัญญาณ SIGKILL ให้ Process ด้วย PID 1234 และ 5678 อย่างบังคับ แทนที่ 1234 ด้วย PID ที่ถูกต้องสำหรับ Process ของคุณ

ยุติ Process ใน Linux ด้วย Port Number: วิธีที่รวดเร็วและปลอดภัย

ควบคุมแอปพลิเคชัน Linux ของคุณ

ขอบคุณขั้นตอนที่ระบุไว้ข้างต้น คุณสามารถยุติ Process Linux ที่กำลังทำงานโดยใช้ Port Number ผ่าน Command Line ได้อย่างรวดเร็ว จำไว้ว่าต้องใช้ความระมัดระวังเมื่อยุติ Process โดยเฉพาะด้วยสัญญาณ SIGKILL เนื่องจากอาจก่อให้เกิดผลข้างเคียงที่ไม่พึงประสงค์ — คุณไม่ต้องการทำให้ระบบไม่เสถียร (System Instability) แหละ

อยากดูประสิทธิภาพระบบบน Linux ใกล้ชิดกว่านี้? คุณอาจต้องการตรวจสอบการใช้หน่วยความจำ (Memory Usage) บน Linux ถ้าคุณกังวลเรื่องความเสี่ยงด้านความปลอดภัย คุณอาจต้องการเปลี่ยนรหัสผ่านบน Linux ด้วย

ต้องการเปลี่ยนไปใช้ Linux Distribution ใหม่? หากคุณเป็นมือใหม่ ให้พิจารณา Linux Mint เป็นทางเลือกที่ปลอดภัยและเสถียร