जवाबों:
यह सुरक्षित है:
sudo pkill -u postgres
यह उपयोगकर्ता के रूप में चलने वाली सभी प्रक्रियाओं को मारता है postgres
। या:
pkill postgres
यह 'पोस्टग्रेज' नाम की सभी प्रक्रियाओं को मारता है।
करो नहीं का उपयोग kill -9
( kill -KILL
)। बस kill
(विकल्प के बिना) एक करता है SIGTERM
, जो आप चाहते हैं।
यदि आप PostgreSQL से जुड़ सकते हैं, तो वैकल्पिक रूप से, आप pgdata स्थान की जांच कर सकते हैं। उदाहरण के लिए:
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
इसके डेटादिर को आम तौर पर इसकी कमांड लाइन पर दिखाया जाएगा।
यह मुझे मारता देख मुझे परेशान करता है और उसी कमांड में पोस्ट करता है। केवल इस प्रश्न का उत्तर देने के लिए pg_ctl
कि:
pg_ctl -D $(psql -Xtc 'show data_directory') stop
-X तर्क .psqlrc
फ़ाइल को अनदेखा करने के लिए कहता है । यह उपयोगी है यदि आपने क्वेरी द्वारा लिए गए समय (\ टाइमिंग कमांड के माध्यम से) को निकालने के लिए कॉन्फ़िगर किया है।
-T तर्क आउटपुट के शीर्ष पर कॉलम नाम और उत्पादित पंक्तियों की कुल संख्या को हटाने के लिए कहता है।
-सी तर्क में निष्पादित होने के लिए SQL कोड होता है।
नंगे चलने psql -c 'show data_directory'
से संभवतः निम्नलिखित आउटपुट उत्पन्न होंगे:
data_directory
--------------------------
/path/to/postgresql/data
(1 row)
इसलिए, इसके माध्यम से backticking pg_ctl के -D तर्क $( ... )
को वितरित करेगा /path/to/postgresql/data
, जो तब डेटाबेस को क्रमबद्ध तरीके से रोक देगा।
PGDATA
पर्यावरण चर के उपयोग से लाभ होगा । इस कमांड को चलाने का मेरा प्रयास विफल हो गया क्योंकि मेरे लिनक्स उपयोगकर्ता नाम के तहत ऐसा कोई डेटाबेस नहीं था।
show data_directory
डेटाबेस निर्दिष्ट किए बिना चलाया जा सकता है, और वास्तव में मेरे सर्वर में से कोई भी सर्वर मेरे नाम पर नहीं है। न ही इसके लिए PGDATA की आवश्यकता है, इसलिए मैं आपकी असफलता को समझाने के लिए एक नुकसान में हूं।
मेरे लिए यह काम रेफरी। https://stackoverflow.com/a/5408501/248616
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';