как прекратить все процессы postgres

18

Как вы можете прекратить все процессы postgres с pg_ctl (или иначе), когда вы не помните, что такое каталог базы данных, и не определена ли переменная среды PGDATA?

    
задан matt 09.11.2014 в 09:24
источник

1 ответ

30

Безопасно:

sudo pkill -u postgres

(убивает все procs, выполняющиеся как пользователь postgres ) или

pkill postgres

(убивает все procs с именем postgres)

Do не использовать kill -9 ( kill -KILL ). kill без параметров делает SIGTERM , что вам нужно.

В качестве альтернативы вы можете проверить местоположение pgdata, если вы можете подключиться к Pg, например.

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

... или путем проверки его переменных окружения в /proc/[postmaster pid]/environ

, где вы указываете postmaster с 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   

Его datadir обычно указывается в командной строке.

    
ответ дан Craig Ringer 09.11.2014 в 10:55
источник