ฉันรู้ว่าโดยค่าเริ่มต้น PostgreSQL ฟังพอร์ต 5432 แต่อะไรคือคำสั่งให้กำหนดพอร์ตของ PostgreSQL จริง ๆ
การกำหนดค่า: Ubuntu 9.10 พร้อม PostgreSQL 8.4
ฉันรู้ว่าโดยค่าเริ่มต้น PostgreSQL ฟังพอร์ต 5432 แต่อะไรคือคำสั่งให้กำหนดพอร์ตของ PostgreSQL จริง ๆ
การกำหนดค่า: Ubuntu 9.10 พร้อม PostgreSQL 8.4
คำตอบ:
lsof และ nmap เป็นโซลูชัน แต่ไม่ได้ติดตั้งตามค่าเริ่มต้น สิ่งที่คุณต้องการคือ netstat (8)
sudo netstat -plunt |grep postgres
g
แฟล็กอีกต่อไปสำหรับss
คำสั่ง ลอง:ss -pa |grep postgresql
ss -pan |grep postgres
เหมาะสมกว่า
ยูทิลิตี PostgreSQL pg_lsclusters แสดงข้อมูลเกี่ยวกับการกำหนดค่าและสถานะของคลัสเตอร์ทั้งหมดรวมถึงหมายเลขพอร์ต
$ pg_lsclusters
Version Cluster Port Status Owner Data directory Log file
8.4 main 5433 online postgres /var/lib/postgresql/8.4/main /var/log/postgresql/postgresql-8.4-main.log
นอกจากนี้ยังมีข้อได้เปรียบที่ไม่ต้องการสิทธิ์ 'sudo' ในการเรียกใช้
บนระบบ Debian และ Ubuntu คำสั่ง pg_lsclusters จัดทำโดยแพ็คเกจ postgresql-common ซึ่งควรติดตั้งเป็นค่าเริ่มต้นพร้อมกับเซิร์ฟเวอร์ postgresql
pg_lsclusters
เป็น Ubuntu-ism และไม่ใช่คำสั่ง Postgres มาตรฐาน มันจะใช้งานได้ในกรณีนี้ แต่ไม่ใช่วิธีแก้ปัญหาทั่วไป ...
ถ้าคุณต้องการที่จะทำจากภายในฐานข้อมูลเพียงแค่ทำ "SHOW พอร์ต" แต่สมมติว่าคุณสามารถเชื่อมต่อกับมันได้อย่างน้อยในพื้นที่ ...
หากคุณกำลังค้นหาบนเครื่องท้องถิ่นฉันจะใช้คำสั่ง lsof เพื่อตรวจสอบว่าพอร์ต postgresql กำลังใช้งานอยู่หรือไม่
lsof -p <postgres_process_id>
ฉันมีเครื่องจักรที่มีอินสแตนซ์ postgres หลายตัวกำลังทำงานอยู่ - ดังนั้นฉันจึงมีปัญหาในการพยายามจับคู่ฐานข้อมูลที่ถูกต้องกับแต่ละพอร์ต ฉันมักจะทำ:
$ ps aux | grep postgres | grep -v 'postgres:'
จากนั้นสำหรับแต่ละอินสแตนซ์ที่ส่งคืนค้นหาไดเรกทอรี ( -D
อาร์กิวเมนต์) และ:
$ sudo grep port $DIR/postgresql.conf
นี่คือทางออกหนึ่งที่ฉันได้พบ:
sudo apt-get install nmap
sudo nmap localhost | grep postgresql
หากคุณต้องการค้นหาเครื่องที่ไม่ใช้งานเครื่องให้เปลี่ยนlocalhost
เป็นที่อยู่ IP ของเซิร์ฟเวอร์
ss -plung|grep postgres
(หมายเหตุแฟล็กเดียวกัน)