ตามหาว่า 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 ครอบแล้ว ฮือ)