Как Вы приятно останавливаете все процессы пост-ГРЭС с pg_ctl
(или иначе), когда Вы не вспоминаете то, что каталог базы данных, и при этом переменная среды PGDATA, не определили?
Безопасно:
sudo pkill -u postgres
Это уничтожает все процессы, работающие как пользователь postgres
. Или:
pkill postgres
Это уничтожает все процессы, названные 'пост-ГРЭС'.
Не использовать kill -9
(kill -KILL
). Просто kill
(без опций), делает a SIGTERM
, который является тем, что Вы хотите.
С другой стороны, можно проверить pgdata местоположение, если можно соединиться с PostgreSQL. Например:
sudo -u postgres psql -c "SHOW data_directory";
... или путем регистрации его переменных среды /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
Его datadir будут обычно показывать на его командной строке.
Это делает меня, нервное наблюдение уничтожает и пост-ГРЭС в той же команде. Для ответа на вопрос с помощью только pg_ctl
, которые были бы:
pg_ctl -D $(psql -Xtc 'show data_directory') stop
-X аргумент говорит для игнорирования .psqlrc
файл. Это полезно, если у Вас есть psql, настроенный для испускания времени, потраченного запросом (через команду \timing).
-t аргумент говорит для удаления имени столбца во главе вывода и общего количества произведенных строк.
-c аргумент содержит код SQL, который будет выполняться.
Выполнение пустого psql -c 'show data_directory'
, вероятно, произведет следующий вывод:
data_directory
--------------------------
/path/to/postgresql/data
(1 row)
Следовательно, backticking это до $( ... )
поставит /path/to/postgresql/data
к-D аргументу pg_ctl, который затем остановит базу данных организованным способом.
Эта работа для меня касательно https://stackoverflow.com/a/5408501/248616
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';