PostgreSQL sunucusu durmayacak


88

Mac OS X 10.8.4'te PostgreSQL ile ilgili biraz sorun yaşıyorsanız. brew rm postgresql --forcePostgres sunucusu çalışırken yanlışlıkla yaptım . Kullanarak brew install postgresqlkurduğumda ve çalıştırdığımda şunu pg_ctl -D /usr/local/var/postgres startalıyorum:

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 postgres" çalıştırdığımda şunu alıyorum:

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

sunucuyu durdurmaya çalıştığımda pg_ctl stop -D /usr/local/var/postgres -m fastveya şunu pg_ctl -D /usr/local/var/postgres stop -mialıyorum:

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

DÜZENLE

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

Özü server.log: https://gist.github.com/anonymous/6106182


1
Does pg_ctl -D /usr/local/var/postgres stop -m immediatediğer iki denemeden daha uzağa olsun?
bma

Bu, pg_ctl -D /usr/local/var/postgres stop -mikoşmakla aynı olurdu ve evet, tüm aldığım "Sunucu kapanmıyor"
Parker Hutchinson

Bunu tahmin ettim, ancak hızlı bir bakışta postgres --helphemen "m" bayrağı görünmedi.
bma

brew reinstall postgresql stackoverflow.com/a/39781473/6086226 benim için çalıştı
Derk Jan Speelman

Yanıtlar:


164

Aynı sorun vardı pg_ctl: server does not shut down. Ayrıca, ps auxwww | grep postgrespostgres'in çalıştığını gösterirken hiçbir postgres pg_ctl -D /usr/local/var/postgres statusçalışmadı. Mac'imi yeniden başlatmak yardımcı olmadı, hatta SMC'yi sıfırlayacak kadar ileri gittim, ancak bu SO Q / A bana bir sonraki adımda ne arayacağıma dair bir fikir verdi: demleme sorunları.

Bu düşünceyi takip ederek, bu sorunu benim için çözen aşağıdaki komutlara gelen bu yararlı blog gönderisini buldum :

$ brew services list
$ brew services restart postgresql

Umarım bu birine yardımcı olur.

Güncelleme - Bilinmeyen komut: hizmetler

Yorumlardan birinin ('Bilinmeyen komut: hizmetler') ardından biraz araştırdıktan sonra, Homebrew yazarlarının serviceskimsenin bu kodu korumak istemediğini görerek depodan çıkarmaya karar verdiğini öğrendim .

Bununla ilgili daha fazla bilgiyi buradan ve buradan okuyabilirsiniz (ilgili github biletleri).

Biraz daha kazı yaptıktan sonra , Mac'lere eklenen bu depoyu buldum services.

Bu şekilde 'geri döndüm' 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

İşte önerilen başka bir çözüm: /apple/150300/need-help-using-homebrew-services-command . Kendim kontrol etmedim, bu yüzden çalışıp çalışmadığını ve nasıl çalıştığını bilmiyorum.


4
Bu, yıllar boyunca aynı şeyi yaptığım için biriktirdiğim pek çok bash takma adını geçersiz kılıyor. İyi bak!
Alex Kestner

2
@naturalc, yorumunuza yanıt olarak cevabımı güncelledi. senin için iyi çalışıp çalışmadığını söyle.
Neara

1
Benim için sorunu çözdü. Teşekkürler!
TotoroTotoro

Dışarıdaki herhangi bir Rails kullanıcısı için, Postgres'i normal Rake komutuyla durdurmaya çalışıyordum bundle exec rake pg:stop. Ama bu işe yaramadı, sonuçlandı pg_ctl: server does not shut down. Çözüm brew services restart postgresqlbenim için çalıştı. 👌
zbeat

Teşekkürler dostum! Aslında çalışan bir homebrew servisi olduğunu anlayamadım. Güzel bir!
Adrian Grzywaczewski

57

$ brew services list

$ brew services stop postgresql

Durduruluyor postgresql, ancak biraz zaman alabilir → Başarıyla durduruldu postgresql(etiket: homebrew.mxcl.postgresql)


2
pg_ctl ... stopBoşuna durmaya çalıştım . Brew servislerini postgresql durdurduktan sonra, pg_ctl ... stop artık beklendiği gibi çalışıyor. Nasıl olduğundan emin değilim, ama bunun çözülmesine sevindim!
Iggy

Sürümü onunla eklemem gerekiyordu. brew services stop postgresql@10
Ivor Scott

12

Benzer bir sorun yaşadım. Birkaç gün önce 'öğle yemeğini' entegre ettiğimi ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistve başlangıçta plist'i başlatmak için bir launchctl sarıcısı olarak kullandığımı unutmuştum . pg_ctl, aşağıdaki kod satırı nedeniyle etkili değildi <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>

İşlemi doğrudan öldürmeye çalışmak işe yaramadı çünkü plist'i boşaltmam gerekiyordu.

    launchctl unload homebrew.mxcl.postgresql.plist

.Plist dosyasının tam olarak aynı ada sahip olmayabileceğini unutmayın. Benim durumumda öyleydi homebrew.mxcl.postgresql92.plist. Kendini kontrol et.
MCP

12

Aynı sorunu yaşıyordum ... başlatma aracısını kaldırmak benim için sorunu çözdü:

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

10

Bu hatayı şu komutu kullanarak atlattım

pg_ctl stop -m immediate

pg_ctl start

Plist'i bu şekilde indirmeme gerek yoktu.


5
Pg_ctl alıyorum: veritabanı dizini belirtilmedi ve PGDATA ayarlanmamış ortam değişkeni
SuperUberDuper

1
aynı hatayı alıyorum: veritabanı dizini belirtilmedi ve PGDATA ortam değişkeni ayarlanmamış
jjj

2
@SuperUberDuper -D eklemeli ve db konumunu belirtmelisiniz. Örneğin: pg_ctl stop -m hemen -D. "." mevcut dizini temsil eder, veritabanı dizininde olduğunuzu varsayarak
Hatzil

8

postgres için brew.plist'imin ~ / Library / LaunchAgents / konumunda kaldırılması ve kaldırılması gerektiği ortaya çıktı. Yeniden başlattıktan sonra her şey yolunda ... kapanış sorusu.


7
lütfen bunu genişletin
SuperUberDuper

7

Birleştirilmiş PostgreSQL'e güvenirken, aşağıdaki komut onu kapatmak için çalıştı.

> brew services stop postgresql

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

Şey öldürme ardından süreçleri listesinde grepping başka cevapta belirtildiği ve As gelmez postgres ilgili değil işi.

ps aux | grep postgres
kill $PID

0

Ben var vermedi postgresaracılığıyla başlatılan brew servicesbu yüzden bu şekilde tutamadı.

Bu işe yaradı.

$ 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

-DYukarıdan bir parametre kullanın .

$ pg_ctl stop -D "/Users/username/Library/Application Support/Postgres/var-9.6"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.