PostgreSQL सर्वर बंद नहीं होगा


87

Mac OS X 10.8.4 पर PostgreSQL के साथ एक समस्या का एक सा होना। मैंने गलती brew rm postgresql --forceसे पोस्टग्रेज सर्वर चला रहा था। जब मैंने प्रयोग किया brew install postgresqlऔर pg_ctl -D /usr/local/var/postgres startमुझे मिला तो मैं चला गया :

pg_ctl: another server might be running; trying to start server anyway
server starting
FATAL:  lock file "postmaster.pid" already exists                                                                       
HINT:  Is another postmaster (PID 752) running in data directory "/usr/local/var/postgres"?

जब मैं "ps -ef चलाते हैं। grep पोस्टग्रैस" मुझे मिलता है:

501   752   235   0 12:42PM ??         0:00.01 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
501   754   752   0 12:42PM ??         0:00.00 postgres: checkpointer process       
501   755   752   0 12:42PM ??         0:00.34 postgres: writer process       
501   756   752   0 12:42PM ??         0:00.02 postgres: wal writer process       
501   757   752   0 12:42PM ??         0:00.01 postgres: autovacuum launcher process       
501   758   752   0 12:42PM ??         0:00.01 postgres: stats collector process       
501   945   452   0 12:58PM ttys000    0:00.00 grep postgres

जब मैं सर्वर को रोकने की कोशिश करता हूं pg_ctl stop -D /usr/local/var/postgres -m fastया pg_ctl -D /usr/local/var/postgres stop -miमुझे मिलता है:

waiting for server to shut down........................................... Failed
pg_ctl: server does not shut down

संपादित करें

which pg_ctl
/usr/local/bin/pg_ctl
pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4

Gist of server.log: https://gist.github.com/anonymous/6106182


1
क्या pg_ctl -D /usr/local/var/postgres stop -m immediateअन्य दो प्रयासों की तुलना में आगे कोई मिलता है?
bma

यह चलने के समान होगा pg_ctl -D /usr/local/var/postgres stop -miऔर हाँ मुझे जो भी मिलेगा वह है "सर्वर बंद नहीं होता है"
पार्कर हचिंसन

मुझे लगता है कि, लेकिन एक त्वरित नज़र postgres --helpतुरंत "एम" झंडा नहीं दिखाती थी।
bma

brew reinstall postgresql stackoverflow.com/a/39781473/6086226 ने मेरे लिए काम किया
Derk Jan Speelman

जवाबों:


161

, एक ही मुद्दा था pg_ctl: server does not shut down। इसके अलावा, ps auxwww | grep postgresदिखाया गया है कि कोई पोस्टग्रेज नहीं चल रहा है, जबकि pg_ctl -D /usr/local/var/postgres statusदिखाया गया है कि पोस्टग्रेज चल रहे हैं। मेरे मैक को रीस्टार्ट करने से मदद नहीं मिली, मैं भी एसएमसी को रीसेट करने के लिए गया था, लेकिन इस एसओ क्यू / ए ने मुझे एक विचार दिया कि आगे क्या देखना है: शराब पीना।

विचार की इस पंक्ति के बाद, मुझे यह मददगार ब्लॉग पोस्ट मिला , जो मेरे लिए इस समस्या को हल करने वाली आज्ञाओं का पालन करने के लिए नीचे आया:

$ brew services list
$ brew services restart postgresql

आशा है कि यह किसी की मदद करेगा।

अद्यतन - अज्ञात कमांड: सेवाएं

टिप्पणियों में से एक ('अज्ञात कमांड: सेवाओं') के बाद थोड़ी जांच के बाद, मुझे पता चला कि होमब्रे के लेखकों servicesने रेपो से हटाने का फैसला किया , यह देखते हुए कि कोई भी इस कोड को बनाए रखना नहीं चाहता है।

आप इसके बारे में अधिक पढ़ सकते हैं यहाँ और यहाँ (संबंधित GitHub टिकट)।

कुछ और खुदाई के बाद, मुझे यह रेपो मिला जो मैक servicesपर जोड़ता है।

इस तरह मैंने 'लौटाया' services:

~ » brew tap gapple/services
~ » brew services
usage: [sudo] brew services [--help] <command> [<formula>]

Small wrapper around `launchctl` for supported formulae, commands available:
   cleanup Get rid of stale services and unused plists
   list    List all services managed by `brew services`
   restart Gracefully restart selected service
   start   Start selected service
   stop    Stop selected service

Options, sudo and paths:

  sudo   When run as root, operates on /Library/LaunchDaemons (run at boot!)
  Run at boot:  /Library/LaunchDaemons
  Run at login: /Users/user/Library/LaunchAgents

यहाँ एक और सुझाया गया समाधान है: /apple/150300/need-help-use-homebrew-services-command । खुद इसकी जाँच नहीं की, इसलिए पता नहीं कि यह कैसे और कैसे काम करता है।


4
यह इतने सारे बैश उपनामों को मानता है जो मैंने ठीक उसी काम को करने के लिए वर्षों से संचित किए हैं। अच्छे लगे!
एलेक्स केस्टनर

2
@naturalc ने आपकी टिप्पणी के जवाब में मेरा जवाब अपडेट किया। मुझे बताएं कि क्या यह आपके लिए ठीक काम करता है।
नीरा

1
मेरे लिए समस्या का समाधान किया। धन्यवाद!
TotoroTotoro

किसी भी रेल उपयोगकर्ता के लिए, मैं सामान्य रेक कमांड के माध्यम से पोस्टग्रेज को रोकने की कोशिश कर रहा था bundle exec rake pg:stop। लेकिन वह काम नहीं कर रहा था, जिसके लिए अग्रणी था pg_ctl: server does not shut down। वर्कअराउंड brew services restart postgresqlमेरे लिए काम किया। 👌
१👌:

धन्यवाद दोस्त! मैं समझ नहीं पा रहा था कि यह वास्तव में एक homebrew सेवा चल रही थी। अच्छा है!
एड्रियन ग्रेजवाकेवस्की

54

$ brew services list

$ brew services stop postgresql

रोकना postgresql, लेकिन इसमें कुछ समय लग सकता है → सफलतापूर्वक रोका गया postgresql(लेबल: homebrew.mxcl.postgresql)


2
pg_ctl ... stopकोई फायदा नहीं हुआ के साथ रोकने की कोशिश की । एक बार जब मैं शराब पीकर दौड़ता था, तो पोस्टग्रैक्स्ल, मेरा pg_ctl ... स्टॉप काम करना बंद कर देता था। यकीन नहीं कैसे, लेकिन मुझे खुशी है कि यह इसे हल कर दिया है!
इग्गी

मुझे इसके साथ संस्करण जोड़ने की आवश्यकता थी। brew services stop postgresql@10
आइवर स्कॉट

12

मेरा मुद्दा भी ऐसा ही था। मैं भूल गया था कि मैंने कुछ दिनों पहले 'लंची' को एकीकृत किया था और इसे ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistस्टार्ट अप पर शुरू करने के लिए एक लॉंचल रैपर के रूप में इस्तेमाल कर रहा था । निम्नलिखित कोड की वजह से pg_ctl प्रभावी नहीं था <key>KeepAlive<key>:

      <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     3 <plist version="1.0">
     4 <dict>
     5   <key>KeepAlive</key>
     6   <true/>
     7   <key>Label</key>
     8   <string>homebrew.mxcl.postgresql</string>
     9   <key>ProgramArguments</key>
    10   <array>
    11     <string>/usr/local/opt/postgresql/bin/postgres</string>
    12     <string>-D</string>
    13     <string>/usr/local/var/postgres</string>
    14     <string>-r</string>
    15     <string>/usr/local/var/postgres/server.log</string>
    16   </array>
    17   <key>RunAtLoad</key>
    18   <true/>
    19   <key>WorkingDirectory</key>
    20   <string>/usr/local</string>
    21   <key>StandardErrorPath</key>
    22   <string>/usr/local/var/postgres/server.log</string>
    23 </dict>
    24 </plist>

इस प्रक्रिया को सीधे मारने की कोशिश नहीं की गई क्योंकि मुझे प्लास्ट को उतारने की जरूरत थी।

    launchctl unload homebrew.mxcl.postgresql.plist

नोट .plist फ़ाइल का सटीक नाम समान नहीं हो सकता है। मेरे मामले में यह था homebrew.mxcl.postgresql92.plist। अपने आप को जांचो।
MCP

12

मुझे एक ही समस्या थी ... लॉन्च एजेंट को हटाने से मेरे लिए समस्या हल हो गई:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

9

कमांड का उपयोग करके मुझे यह त्रुटि मिली

pg_ctl stop -m immediate

pg_ctl start

मुझे इस तरह से प्लास्ट उतारने की जरूरत नहीं थी।


5
मुझे pg_ctl मिलता है: कोई डेटाबेस निर्देशिका निर्दिष्ट नहीं है और पर्यावरण चर PGDATA परेशान है
SuperUberDuper

1
एक ही त्रुटि हो रही है: कोई डेटाबेस निर्देशिका निर्दिष्ट नहीं है और पर्यावरण चर PGDATA परेशान
jjj

2
@SuperUberDuper आपको -D जोड़ना चाहिए और db स्थान निर्दिष्ट करना चाहिए। उदाहरण के लिए: pg_ctl stop -m तत्काल -D। "।" वर्तमान निर्देशिका के लिए खड़ा है, मान
लीजिए

8

पता चला है कि पोस्ट करने के लिए मेरे brew.plist ~ उतार / लाइब्रेरी / LaunchAgents / पर उतारने और हटाने की जरूरत है। पुनरारंभ के बाद सब ठीक है ... समापन प्रश्न।


7
कृपया इस पर विस्तार करें
SuperUberDuper

7

जब काढ़ा लगाने वाली पोस्टग्रेसीक्यूएल पर भरोसा करते हैं, तो निम्न कमांड ने इसे बंद करने के लिए काम किया।

> brew services stop postgresql

stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

जैसा कि प्रक्रियाओं की सूची के माध्यम से एक और जवाब में बताया गया है और फिर पोस्टग्रेज से संबंधित कुछ भी काम नहीं करता है।

ps aux | grep postgres
kill $PID

0

मैंने इसके postgresमाध्यम से शुरुआत नहीं की brew services, इसलिए इसे इस तरह से रोक नहीं सका।

यह काम किया।

$ ps -ef | grep postgres
501   547     1   0  2:07pm ??         0:00.29 /Applications/Postgres.app/Contents/Versions/9.6/bin/postgres -D /Users/username/Library/Application Support/Postgres/var-9.6 -p 5432

-Dऊपर से पैरामाटर का प्रयोग करें ।

$ pg_ctl stop -D "/Users/username/Library/Application Support/Postgres/var-9.6"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.