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.