2011-11-02 9 views
64

मैं कैसे बता सकता हूं कि मेरा पोस्टग्रेस्क्ल सर्वर चल रहा है या नहीं?पोस्टग्रेएसक्यूएल सर्वर की स्थिति की जांच कैसे करें मैक ओएस एक्स

मैं इस संदेश को हो रही है:

[~/dev/working/sw] sudo bundle exec rake db:migrate 
rake aborted! 
could not connect to server: Connection refused 
    Is the server running on host "localhost" and accepting 
    TCP/IP connections on port 5432? 

अद्यतन:

> which postgres 
/usr/local/bin/postgres 
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start 
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory 

अद्यतन 2:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 
server starting 
sh: /usr/local/var/postgres/server.log: No such file or directory 
+1

आपको मैक ओएस/एक्स पर पोस्टग्रेज़ के कई संस्करणों को भी देखना चाहिए। यदि आपने होमब्रू के माध्यम से पोस्टग्रेर्स इंस्टॉल किए हैं तो जब आपका पथ ग़लत ढंग से सेटअप होता है तो आप उपर्युक्त त्रुटि प्राप्त कर सकते हैं - मैंने गलती से अपना रास्ता खराब कर दिया है और सबकुछ पोस्टग्रेज़ के सिस्टम इंस्टॉलेशन का उपयोग करना शुरू कर दिया है, जब तक कि मैं पथ को समायोजित नहीं करता तब तक बहुत अच्छा काम नहीं करता ब्रू इंस्टॉल –

उत्तर

62

चल प्रक्रियाओं की जांच करने के लिए सबसे आसान तरीका:

ps auxwww | grep postgres 
,210

और एक आदेश है कि कुछ इस तरह दिखता देखने के (अपने संस्करण 8.3 नहीं हो सकता है):

/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data 

सर्वर प्रारंभ करने के लिए कुछ इस तरह निष्पादित करें:

/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log 
+0

ठीक है और अगर मुझे ऐसा कुछ नहीं मिलता है, तो मैं सर्वर कैसे शुरू करूं? – Ramy

+0

@ रैमी संपादित उत्तर – Bohemian

+1

'pgrep postgres' भी काम करता है। या 'पीएस auxwww | grep [p] ostgres' को 'grep' को उठाए जाने से रोकने के लिए। –

8

यह जहां पर निर्भर करता है आपका postgresql सर्वर स्थापित है। आप नीचे दिए गए सर्वर को मैन्युअल रूप से प्रारंभ करने के लिए pg_ctl का उपयोग करते हैं।

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 
+0

मेरा प्रश्न संपादित करें, कृपया – Ramy

+0

@Ramy आपने पथ में * var * के लिए * bin * को प्रतिस्थापित किया। – jamesallman

+0

हमम ... ठीक है। मैंने सोचा कि मुझे यह जांचने की ज़रूरत है कि मेरा इंस्टॉल कहां था। कृपया नया अपडेट देखें। – Ramy

13

आप शायद postgres init नहीं किया।

यदि आप होमब्रू का उपयोग करके स्थापित करते हैं, तो किसी भी चीज को प्रयोग करने योग्य होने से पहले इनिट को चलाया जाना चाहिए।

निर्देशों को देखने के brew info postgres

# Create/Upgrade a Database 
If this is your first install, create a database with: 
    initdb /usr/local/var/postgres -E utf8 

To have launchd start postgresql at login: 
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 
Then to load postgresql now:  
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
Or, if you don't want/need launchctl, you can just run: 
    pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

चलाने एक बार जब आप समाप्त हो गया है कि, यह कुछ ऐसा कहना चाहिए:

सफलता। अब आप का उपयोग कर डेटाबेस सर्वर शुरू कर सकते हैं:

postgres -D /usr/local/var/postgres or 
pg_ctl -D /usr/local/var/postgres -l logfile start 

अभी भी समस्या आ रहे हैं, तो अपने फ़ायरवॉल की जाँच करें। यदि आप हैंडऑफ जैसे अच्छे व्यक्ति का उपयोग करते हैं! और यह यातायात को अवरुद्ध करने के लिए कॉन्फ़िगर किया गया था, तो आपका पृष्ठ डेटाबेस नहीं देखेगा।

31

आप अगर postgress चल रहा है निर्धारित करने के लिए निम्न आदेश चला सकते हैं:

$ pg_ctl status 

तुम भी PGDATA वातावरण चर सेट करने के लिए चाहता हूँ।

यहाँ postgres के लिए मेरे ~/.bashrc फ़ाइल में मैं क्या है:

export PGDATA='/usr/local/var/postgres' 
export PGHOST=localhost 
alias start-pg='pg_ctl -l $PGDATA/server.log start' 
alias stop-pg='pg_ctl stop -m fast' 
alias show-pg-status='pg_ctl status' 
alias restart-pg='pg_ctl reload' 

, उन्हें प्रभावी करने के लिए प्राप्त करने के लिए इतना है कि यह स्रोत करने के लिए याद रखें:

$ . ~/.bashrc 

अब, यह कोशिश करते हैं और आपको चाहिए कुछ इस तरह मिलती है:

$ show-pg-status 
pg_ctl: server is running (PID: 11030) 
/usr/local/Cellar/postgresql/9.2.4/bin/postgres 
+0

आपके त्रुटि संदेश को देखते हुए, मैं शर्त लगाता हूं कि आपके initdb कमांड को चलाने के लिए सैमूडी के सुझाव से आपके "कनेक्शन से इनकार कर दिया गया" समस्या ठीक हो जाएगी। एक बार यह तय हो जाने के बाद, अपने पोस्टग्रेज़ डीबी सर्वर की स्थिति प्राप्त करने के लिए मेरे सुझावों को आजमाएं। – l3x

+0

वाह .... मैं वर्षों से पोस्टग्रेर्स का पुनर्निर्माण कर रहा हूं। यह एकदम सही समाधान है !! – mindtonic

4

pg_ctl status आदेश sugges अन्य उत्तरों में ted जांचता है कि पोस्टमास्टर प्रक्रिया मौजूद है और यदि ऐसा है कि यह चल रहा है कि यह चल रहा है। इसका मतलब यह नहीं है कि यह कनेक्शन स्वीकार करने या प्रश्न निष्पादित करने के लिए तैयार है।

एक सरल विधि चलाने और निकास कोड की जांच करने के लिए psql का उपयोग करने जैसी अन्य विधि का उपयोग करना बेहतर है। psql -c 'SELECT 1', या pg_isreadyto check the connection status का उपयोग करें।

+2

'psql -c" चयन 1 "-d {dbname}>/dev/null || पोस्टग्रेस-डी/यूएसआर/स्थानीय/var/postgres> postgres.log 2> और 1 और 'यदि आप एक बार में पोस्टग्रेस को जांचना और शुरू करना चाहते हैं (स्वचालन स्क्रिप्ट के लिए आसान)। – Kate

6

PostgreSQL 9.3 के रूप में, आप PostgreSQL सर्वर की कनेक्शन स्थिति निर्धारित करने के लिए pg_isready कमांड का उपयोग कर सकते हैं।

docs से

:

pg_isready रिटर्न 0 खोल करने के लिए करता है, तो सर्वर सामान्य रूप से कनेक्शन स्वीकार कर रहा है, 1 यदि सर्वर कनेक्शन (स्टार्टअप के दौरान उदाहरण के लिए) को खारिज किया जाता है, 2 अगर वहाँ के लिए कोई जवाब नहीं था कनेक्शन प्रयास, और 3 अगर कोई प्रयास नहीं किया गया था (उदाहरण के लिए अमान्य पैरामीटर के कारण)।

संबंधित मुद्दे