![como parar todos os processos do postgres](https://rvso.com/image/1048304/como%20parar%20todos%20os%20processos%20do%20postgres.png)
Como você interrompe todos os processos do postgres com pg_ctl
(ou não), quando você não se lembra qual é o diretório do banco de dados, nem tem a variável de ambiente PGDATA definida?
Responder1
É seguro:
sudo pkill -u postgres
Isso mata todos os processos em execução como user postgres
. Ou:
pkill postgres
Isso mata todos os processos chamados 'postgres'.
Fazernãousar kill -9
( kill -KILL
). Apenas kill
(sem opções) faz um SIGTERM
, que é o que você deseja.
Alternativamente, você pode verificar a localização do pgdata se puder se conectar ao PostgreSQL. Por exemplo:
sudo -u postgres psql -c "SHOW data_directory";
...ou verificando suas variáveis de ambiente em , onde você identifica o postmaster com . Procure aquele que é o pai dos outros processos. Por exemplo:/proc/[postmaster pid]/environ
ps -fHC postgres
postgres
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
Seu datadir geralmente será mostrado em sua linha de comando.
Responder2
Fico nervoso vendo kill e postgres no mesmo comando. Para responder à pergunta usando apenas pg_ctl
, seria:
pg_ctl -D $(psql -Xtc 'show data_directory') stop
O argumento -X diz para ignorar o .psqlrc
arquivo. Isto é útil se você configurou o psql para emitir o tempo gasto por uma consulta (através do comando \timing).
O argumento -t diz para remover o nome da coluna no topo da saída e o número total de linhas produzidas.
O argumento -c contém o código SQL a ser executado.
Executar um bare psql -c 'show data_directory'
provavelmente produzirá a seguinte saída:
data_directory
--------------------------
/path/to/postgresql/data
(1 row)
Conseqüentemente, retroceder isso $( ... )
será entregue /path/to/postgresql/data
ao argumento -D de pg_ctl, que interromperá o banco de dados de maneira ordenada.
Responder3
Este trabalho para mim ref.https://stackoverflow.com/a/5408501/248616
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';
Responder4
Você pode simplesmente executar o comando
systemctl stop postgresql
Quando desejar reiniciá-lo, execute
systemctl start postgresql
- É provável que esses comandos exijam que você anexe
sudo