कैसे अच्छी तरह से सभी प्रक्रियाओं को स्थगित करने से रोकें


33

pg_ctlजब आप डेटाबेस निर्देशिका क्या है याद नहीं है, और न ही PGDATA पर्यावरण चर परिभाषित किया गया है जब आप अच्छी तरह से (या अन्यथा) के साथ सभी पोस्टग्रेज प्रक्रियाओं को कैसे रोकते हैं?

जवाबों:


58

यह सुरक्षित है:

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]/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   

इसके डेटादिर को आम तौर पर इसकी कमांड लाइन पर दिखाया जाएगा।


3

यह मुझे मारता देख मुझे परेशान करता है और उसी कमांड में पोस्ट करता है। केवल इस प्रश्न का उत्तर देने के लिए 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, जो तब डेटाबेस को क्रमबद्ध तरीके से रोक देगा।


1
मुझे लगता है, अगर यह आधिकारिक तौर पर काम करने के लिए है, तो यह सही उत्तर होना चाहिए। क्या यह एक नया विकल्प है?
मैट

इस समाधान का उपयोग किए जा रहे विकल्पों की व्याख्या करने के साथ-साथ PGDATAपर्यावरण चर के उपयोग से लाभ होगा । इस कमांड को चलाने का मेरा प्रयास विफल हो गया क्योंकि मेरे लिनक्स उपयोगकर्ता नाम के तहत ऐसा कोई डेटाबेस नहीं था।
स्टीफन

show data_directoryडेटाबेस निर्दिष्ट किए बिना चलाया जा सकता है, और वास्तव में मेरे सर्वर में से कोई भी सर्वर मेरे नाम पर नहीं है। न ही इसके लिए PGDATA की आवश्यकता है, इसलिए मैं आपकी असफलता को समझाने के लिए एक नुकसान में हूं।
dland

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.