como parar todos os processos do postgres

como parar todos os processos do postgres

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]/environps -fHC postgrespostgres

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 .psqlrcarquivo. 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/dataao 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ê anexesudo

informação relacionada