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.