PostgreSQLサーバーが停止しない


89

Mac OS X10.8.4のPostgreSQLで少し問題があります。brew rm postgresql --forcepostgresサーバーの実行中に誤って実行しました。を使用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 postgres」を実行すると、次のようになります。

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

要旨server.loghttps//gist.github.com/anonymous/6106182


1
ないpg_ctl -D /usr/local/var/postgres stop -m immediate他の二つの試みよりも、それ以上を取得しますか?
bma 2013

それは実行中pg_ctl -D /usr/local/var/postgres stop -miと同じで、「サーバーがシャットダウンしない」だけです
Parker Hutchinson

推測しましたが、一目見ただけでpostgres --helpはすぐには「m」フラグが表示されませんでした。
bma 2013

brew reinstall postgresql stackoverflow.com/a/39781473/6086226は私のために働いた
Derk JanSpeelman19年

回答:


164

同じ問題がありました、pg_ctl: server does not shut down。さらに、postgresが実行されていることps auxwww | grep postgrespg_ctl -D /usr/local/var/postgres status示している間、postgresが実行されていないことを示しました。Macを再起動しても効果はなく、SMCをリセットすることもできましたが、このSO Q / Aにより、次に何を探すべきかがわかりました。醸造の問題です。

この考えに従って、私はこの有用なブログ投稿を見つけました。それは私にとってこの問題を解決する次のコマンドに帰着しました:

$ brew services list
$ brew services restart postgresql

これが誰かを助けることを願っています。

更新-不明なコマンド:サービス

コメントの1つ(「不明なコマンド:サービス」)に続いて少し調査した後、Homebrewの作成者がservices、このコードを維持したくないと考えて、リポジトリから削除することを決定したことがわかりました。

詳細については、こちらこちら(関連するgithubチケット)をご覧ください

さらに掘り下げた後、Macに追加されるこのリポジトリを見つけました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

別の推奨される解決策は次のとおりです:https//apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command。自分でチェックしなかったので、どのように機能するのかわかりません。


4
これは、まったく同じことを行うために私が何年にもわたって蓄積してきた非常に多くのbashエイリアスを廃止します。格好良い!
Alex Kestner 2014

2
@naturalcはあなたのコメントに応えて私の答えを更新しました。それがあなたのためにうまくいくかどうか教えてください。
ニアラ2015年

1
私のために問題を解決しました。ありがとう!
totoroTotoro 2016年

Railsユーザーの場合、通常のRakeコマンドでPostgresを停止しようとしていましたbundle exec rake pg:stop。しかし、それは機能せず、につながりましたpg_ctl: server does not shut down。回避策brew services restart postgresqlは私のために働いた。👌– zbeat 2017
17:06

ありがとう!それが実際に実行されている自作サービスであるとは理解できませんでした。良いですね!
Adrian Grzywaczewski 2018年

57

$ brew services list

$ brew services stop postgresql

停止postgresqlしていますが、しばらく時間がかかる場合があります→正常に停止しましたpostgresql(ラベル:homebrew.mxcl.postgresql)


2
pg_ctl ... stop無駄に停止しようとしました。brew services stop postgresqlを実行すると、pg_ctl ... stopが期待どおりに機能するようになりました。方法はわかりませんが、これで解決できてうれしいです。
イギー

それと一緒にバージョンを追加する必要がありました。 brew services stop postgresql@10
IvorScott20年

12

同様の問題がありました。数日前に「lunchy」を統合~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistし、起動時にplistを開始するためのlaunchctlラッパーとして使用していたことを忘れていました。次のコード行のため、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>

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

10

コマンドを使用してこのエラーを回避しました

pg_ctl stop -m immediate

pg_ctl start

この方法でplistをアンロードする必要はありませんでした。


5
pg_ctlを取得します:データベースディレクトリが指定されておらず、環境変数PGDATAが設定されていません
SuperUberDuper 2016

1
同じエラーが発生します:データベースディレクトリが指定されておらず、環境変数PGDATAが設定されていません
jjj 2017年

2
@SuperUberDuper -Dを追加し、データベースの場所を指定する必要があります。例:pg_ctl stop -mimmediate-D。「。」データベースディレクトリにいると仮定して、現在のディレクトリを表します
Hatzil 2018

8

postgres用の私のbrew.plistをアンロードして〜/ Library / LaunchAgents /で削除する必要があることがわかりました。再起動後、すべてが順調です...質問を閉じます。


7
これを拡張してください
SuperUberDuper 2016

7

brewでインストールされたPostgreSQLに依存している場合、次のコマンドはそれをシャットダウンするために機能しました。

> brew services stop postgresql

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

別の回答で述べたように、プロセスのリストをgrepしてから、postgres関連のものをすべて強制終了しても機能しませ

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.