web-dev-qa-db-ja.com

PostgreSQLサーバーは停止しません

Mac OS X 10.8.4上のPostgreSQLに少し問題がある。 postgresサーバーの実行中に誤って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 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

[〜#〜] edit [〜#〜]

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

server.logの要点: https://Gist.github.com/anonymous/6106182

73

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

7

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

この考えに沿って、この役立つ ブログ投稿 を見つけました。これは、この問題を解決する次のコマンドに由来します。

$ brew services list
$ brew services restart postgresql

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

更新-不明なコマンド:services

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

詳しくは here および here (関連するgithubチケット)をご覧ください。

さらに掘り下げた後、Macでservicesを追加する this リポジトリが見つかりました。

これが私が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

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

135
Neara

$ brew services list

$ brew services stop postgresql

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

31
rust

同様の問題がありました。数日前に「ランチ」を統合し、plistを開始するlaunchctlラッパーとして使用していたことを忘れていました~/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>

Plistをアンロードする必要があるため、プロセスを直接強制終了しようとしても機能しませんでした。

    launchctl unload homebrew.mxcl.postgresql.plist
12
user3155603

私は同じ問題を抱えていました...起動エージェントを削除すると問題が解決しました:

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

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

pg_ctl stop -m immediate

pg_ctl start

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

8

作成されたPostgreSQLに依存している場合、次のコマンドがPostgreSQLをシャットダウンしました。

> brew services stop postgresql

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

別の回答で述べたように、プロセスのリストをgrepし、postgres関連の何かを強制終了するとnotが機能します。

ps aux | grep postgres
kill $PID
6
Peter Lustig