Yanıtlar:
Bu güvenlidir:
sudo pkill -u postgres
Bu kullanıcı olarak çalışan tüm işlemleri öldürür postgres. Veya:
pkill postgres
Bu 'postgres' adlı tüm işlemleri öldürür.
Do not kullanmak kill -9( kill -KILL). Sadece kill(seçeneksiz) SIGTERMyapmak istediğin şey budur.
Alternatif olarak, PostgreSQL'e bağlanabiliyorsanız pgdata konumunu kontrol edebilirsiniz. Örneğin:
sudo -u postgres psql -c "SHOW data_directory";
... veya postacı ile tanımladığınız ortam değişkenlerini kontrol ederek . Diğer işlemlerin ebeveyni olanı arayın . Örneğin:/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
Datadir genellikle komut satırında gösterilecektir.
Aynı komutta öldürmeyi ve postgres'i görünce beni tedirgin ediyor. Soruyu yalnızca kullanarak yanıtlamak için pg_ctl, bu:
pg_ctl -D $(psql -Xtc 'show data_directory') stop
-X argümanı .psqlrcdosyayı görmezden geldiğini söylüyor . Bu, bir sorgu tarafından harcanan zamanı (\ timing komutu ile) göndermek için yapılandırılmış psql'niz varsa kullanışlıdır.
-T argümanı çıktının üstündeki sütun adını ve üretilen toplam satır sayısını kaldırmayı söylüyor.
-C argümanı yürütülecek SQL kodunu içerir.
Çıplak koşmak psql -c 'show data_directory'muhtemelen aşağıdaki çıktıları üretecektir:
data_directory
--------------------------
/path/to/postgresql/data
(1 row)
Bu nedenle, bu through backticking $( ... )teslim edecek /path/to/postgresql/datasonra düzenli bir şekilde veritabanı durur pg_ctl ait -D bağımsız değişken için.
PGDATAçevre değişkeni kullanımının yanı sıra, kullanılan seçeneklerin açıklanmasından da fayda sağlayacaktır . Bu komutu çalıştırma denemem, Linux kullanıcı adımın altında böyle bir veritabanı olmadığı için başarısızlıkla sonuçlandı.
show data_directorybir veritabanı belirtilmeden çalıştırılabilir ve gerçekten de hiçbir sunucumun ismimde bir veritabanı yoktur. Ayrıca PGDATA gerektirmez, bu yüzden başarısızlığınızı açıklamak için bir zararım var.
Bu iş benim için ref. https://stackoverflow.com/a/5408501/248616
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';