Saltar al contenido

cómo detener bien todos los procesos de postgres

Solución:

Es seguro:

sudo pkill -u postgres

Eso mata todos los procesos que se ejecutan como usuario postgres. O:

pkill postgres

Eso mata todos los procesos llamados ‘postgres’.

Hacer no usar kill -9 (kill -KILL). Solo kill (sin opciones) hace un SIGTERM, que es lo que quieres.

Alternativamente, puede verificar la ubicación de pgdata si puede conectarse a PostgreSQL. Por ejemplo:

sudo -u postgres psql -c "SHOW data_directory";

… o comprobando sus variables de entorno en /proc/[postmaster pid]/environ, donde identifica al administrador de correos con ps -fHC postgres. Busque el que es el padre del otro postgres Procesos. Por ejemplo:

postgres   794     1  0 Nov06 ?        00:00:03 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data -p 5432
postgres   857   794  0 Nov06 ?        00:00:00   postgres: logger process   
postgres   871   794  0 Nov06 ?        00:00:00   postgres: checkpointer process   
postgres   872   794  0 Nov06 ?        00:00:00   postgres: writer process   
postgres   873   794  0 Nov06 ?        00:00:00   postgres: wal writer process   
postgres   874   794  0 Nov06 ?        00:00:03   postgres: autovacuum launcher process   
postgres   875   794  0 Nov06 ?        00:00:07   postgres: stats collector process   

Su datadir generalmente se mostrará en su línea de comando.

Me pone nervioso ver kill y postgres en el mismo comando. Para responder a la pregunta usando solo pg_ctl, eso sería:

pg_ctl -D $(psql -Xtc 'show data_directory') stop

El argumento -X dice que se ignore el .psqlrc expediente. Esto es útil si tiene psql configurado para emitir el tiempo que tarda una consulta (a través del comando timing).

El argumento -t dice que se elimine el nombre de la columna en la parte superior de la salida y el número total de filas producidas.

El argumento -c contiene el código SQL que se ejecutará.

Corriendo un desnudo psql -c 'show data_directory' probablemente producirá la siguiente salida:

      data_directory
--------------------------
 /path/to/postgresql/data
(1 row)

Por lo tanto, retrocediendo esto a través de $( ... ) entregará /path/to/postgresql/data al argumento -D de pg_ctl, que luego detendrá la base de datos de manera ordenada.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *