Re: ¿Está el servidor en ejecución localmente y aceptando conexiones en el socket de dominio Unix <</tmp/.s.PGSQL.5432>>?

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: David Hernández <davhern(at)gmail(dot)com>
Cc: Ana Ramirez <anita(dot)ins(at)gmail(dot)com>, Jaime Casanova <jaime(at)2ndquadrant(dot)com>, Álvaro Hernández <aht(at)nosys(dot)es>, POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: ¿Está el servidor en ejecución localmente y aceptando conexiones en el socket de dominio Unix <</tmp/.s.PGSQL.5432>>?
Date: 2011-06-21 13:55:03
Message-ID: 1308664009-sup-2814@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-es-ayuda

Excerpts from David Hernández's message of mar jun 21 04:16:41 -0400 2011:
> Gracias a todos. Jejeje se nota que soy usuario novato de linux (bueno no
> novato, pero si no muy experimentado :P).
> He comprovado que el servidor este lanzado (ps -ef|grep postgres) y me
> aparece funcionando, y lanzado por el root (o al menos me aparece el root al
> principio de la linea), no deberia ser lanzado por el usuario de postgresql?
> los numeros que aparecen imagino que son los pid, verdad? no los puertos.

Son los PID, no los puertos. Un postgres normal no corre como root; si
lo intentas, se detiene con un mensaje de error. Seguramente estás
malinterpretando la salida de ps. Si quieres, muéstrala para indicarte
el error. (La otra alternativa es que OpenSUSE parche Postgres para
eliminar esta protección, pero eso sería extremadamente estúpido de su
parte. Ni siquiera Gentoo hace eso).

La manera más sencilla de saber dónde está el socket es usando lsof.
Debes buscar un "archivo" de tipo "unix". Acá está mi ps:

$ ps u -C postmaster
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
alvherre 3299 0.0 0.3 66132 7716 pts/2 S+ 09:45 0:00 /pgsql/install/HEAD/bin/postmaster -p 55432
alvherre 3302 0.0 0.0 66132 1108 ? Ss 09:45 0:00 postgres: writer process
alvherre 3303 0.0 0.0 66132 1100 ? Ss 09:45 0:00 postgres: wal writer process
alvherre 3304 0.0 0.1 66960 2376 ? Ss 09:45 0:00 postgres: autovacuum launcher process
alvherre 3305 0.0 0.0 34632 1172 ? Ss 09:45 0:00 postgres: stats collector process

Observa que el proceso que realmente me interesa es el PID 3299. Luego ejecuto lsof:

$ lsof -p 3299
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postmaste 3299 alvherre cwd DIR 9,3 4096 770057 /home/alvherre/Code/pgsql/install/HEAD/data
postmaste 3299 alvherre rtd DIR 8,1 4096 2 /
postmaste 3299 alvherre txt REG 9,3 21617387 770531 /home/alvherre/Code/pgsql/install/HEAD/bin/postgres
postmaste 3299 alvherre DEL REG 0,4 3309643 /SYSV034dd341
postmaste 3299 alvherre mem REG 8,1 47616 47241 /lib/libnss_files-2.13.so
postmaste 3299 alvherre mem REG 8,6 5596464 237603 /usr/lib/locale/locale-archive
postmaste 3299 alvherre mem REG 8,6 93936 215892 /usr/lib/libz.so.1.2.3.4
postmaste 3299 alvherre mem REG 8,1 1572120 47146 /lib/libc-2.13.so
postmaste 3299 alvherre mem REG 8,1 530736 47211 /lib/libm-2.13.so
postmaste 3299 alvherre mem REG 8,1 14768 47214 /lib/libdl-2.13.so
postmaste 3299 alvherre mem REG 8,6 1853320 213885 /usr/lib/libcrypto.so.1.0.0
postmaste 3299 alvherre mem REG 8,6 337216 213889 /usr/lib/libssl.so.1.0.0
postmaste 3299 alvherre mem REG 8,6 1398040 213252 /usr/lib/libxml2.so.2.7.8
postmaste 3299 alvherre mem REG 8,1 136936 47213 /lib/ld-2.13.so
postmaste 3299 alvherre mem REG 9,3 428847 770756 /home/alvherre/Code/pgsql/install/HEAD/share/locale/es/LC_MESSAGES/postgres-9.2.mo
postmaste 3299 alvherre mem REG 8,6 26048 395051 /usr/lib/gconv/gconv-modules.cache
postmaste 3299 alvherre 0u CHR 136,2 0t0 5 /dev/pts/2
postmaste 3299 alvherre 1u CHR 136,2 0t0 5 /dev/pts/2
postmaste 3299 alvherre 2u CHR 136,2 0t0 5 /dev/pts/2
postmaste 3299 alvherre 3u IPv4 87224 0t0 TCP localhost:55432 (LISTEN)
postmaste 3299 alvherre 4u unix 0xffff88003d2f7400 0t0 87225 /tmp/.s.PGSQL.55432
postmaste 3299 alvherre 5u IPv4 88190 0t0 UDP localhost:43308->localhost:43308

Acá veo que el socket es /tmp/.s.PGSQL.55432

Luego, para conectarme puedo hacerlo de esta forma:
psql -h /tmp -p 55432

> Os explico mejor mi situación, tengo un opensuse corriendo en una maquina
> virtual de Virtual Box, y un dia cuando lo apague salvé el estado, cuando
> volvi a enceder me dio error y desde entonces me ha sido imposible iniciar
> postgres, desde yast/servicios del sistema (desde kde) probé a iniciar el
> servicio, pero me daba error, a partir de ahí he googleado hasta la
> saciedad, y si hay gente con el mismo problema pero no he conseguido aplicar
> ninguna de las soluciones.

Yo, las veces que he visto problemas de este tipo, la gente inventa
soluciones que no tienen ningún sentido. Es lo que pasa cuando un
montón de novatos se juntan a preguntar cosas que ninguno entiende y
sacan respuestas como conejos de un sombrero. Después se extrañan que
no funcione, le echan la culpa a Linux, reinstalan todo y quedan tan
contentos sin haber aprendido nada de la experiencia.

--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message David Hernández 2011-06-22 07:37:56 Re: ¿Está el servidor en ejecución localmente y aceptando conexiones en el socket de dominio Unix <</tmp/.s.PGSQL.5432>>?
Previous Message Kevin Grittner 2011-06-21 13:40:02 Re: BUG #6070: how db is stored

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message David Hernández 2011-06-22 07:37:56 Re: ¿Está el servidor en ejecución localmente y aceptando conexiones en el socket de dominio Unix <</tmp/.s.PGSQL.5432>>?
Previous Message Marcos Ortiz 2011-06-21 13:30:41 Re: SELECT cod_familia as CODIGO no respeta la "etiqueta"