ตามหาว่า program ไหนแย่ง port ไป ด้วยคำสั่ง ps

เมื่อหลายวันก่อน เรากำลังอัพ Airflow เพื่อจะเล่นบนเครื่อง local ของเรา ในขณะที่เรากำลังเข้า localhost:8080 ซึ่งเป็นทางเข้าและ port ปกติของ webserver ของ Airflow

ปรากฏว่าเราหน้าตาของ Airflow เราเปลี่ยนไป อ้าก

บุคคลปริศนานามว่า Jetty มาแย่ง port 8080 ของเราไปซะแล้ว

ว่าแต่… เมื่อไรนะที่โดนแย่ง จำไม่ได้ซะด้วยสิเนี้ย

แล้วก็ระลึกชาติว่าเอ้ ฉันเผลอไปอัพอะไรค้างไว้รึเปล่านะ สมองปลาทองอย่างเรา

clue ที่มีให้สืบต่อมีแค่ว่ายัย Jetty เกี่ยวกับ Java แล้ว application อะไรรันด้วย Java น้า นึกยังไงก็นึกไม่ออก

ตอนนั้นก็ดันไปเล่นนู้นเล่นนี้ไปเรื่อยซะด้วย รู้งี้รันด้วย Docker แต่แรกซะดีกว่า (พร้อมตีมือตัวเอง นี่แหน่ะ)

อ่ะ จำไม่ได้ไม่เป็นไร ไหนดูซิว่าใครใช้ port 8080 ของเราอยู่นะ เราจึงลองเทสด้วยคำสั่ง

lsof -i 8080 | grep LISTEN

แล้วตัวร้ายของเราก็ขึ้นมา หึหึ เสร็จฉันยัยตัวดี

ตัวร้ายของเราชื่อมี Process Identification Number หรือ PID ซึ่งมีค่าเป็น 1029 ตอนนี้ และได้กลายมาเป็น clue ที่ 2 ของเรากันแล้ว แต่นั่นไม่ทำให้เรารู้เพิ่มเติมได้เลยว่าคือ program อะไรที่รันค้างอยู่

เราจึงใช้อีกคำสั่ง ps เพื่อดูรายละเอียดมากขึ้น จาก PID 1029

ps -ef | grep 1029

คำสั่งนี้จะการดู process status ตัว 1029 โดย -ef จะเป็นการดูแบบ full format ละเอียดๆ

และผลลัพท์ที่ได้คือ

เราจะเห็นมี keyword คำว่า ZooKeeper !!!

แล้วก็ระลึกชาติได้ว่า อ้อ ก่อนหน้านั้นแอบลง ZooKeeper ไว้ในเครื่องและเปิดเล่นมาแปบนึง ตอนนั้นตัดสินใจว่าอยาก install ในเครื่องด้วยเหตุผลบางอย่างเลยไม่ได้ใช้ Docker

ดังนั้นเราจะกำจัดนางด้วยคำสั่ง kill -9 ตามด้วย PID

kill -9 1029

เท่านี้ ZooKeeper ตัวร้ายของเราก็จะถูกปิด process ไปแล้ว เราก็จะใช้ Airflow ได้ตามปกติแล้ว เย้ !!

(และสัญญากับตัวเองว่าจะไม่ซี้ซั้วะเล่นโปรเจคโดยไม่มี env ครอบแล้ว ฮือ)

Comment and Feedback

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.