Máy chủ PostgreSQL sẽ không dừng lại


87

Có một chút vấn đề với PostgreSQL trên Mac OS X 10.8.4. Tôi đã vô tình làm brew rm postgresql --forcetrong khi máy chủ postgres đang chạy. Khi tôi cài đặt bằng cách sử dụng brew install postgresqlvà chạy, pg_ctl -D /usr/local/var/postgres starttôi nhận được:

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"?

khi tôi chạy "ps -ef | grep postgres", tôi nhận được:

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

khi tôi cố gắng dừng máy chủ bằng pg_ctl stop -D /usr/local/var/postgres -m fasthoặc pg_ctl -D /usr/local/var/postgres stop -mitôi nhận được:

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

BIÊN TẬP

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 immediatenhận được gì xa hơn hai lần thử kia không?
bma,

Đó sẽ là giống như chạy pg_ctl -D /usr/local/var/postgres stop -mivà vâng tất cả tôi nhận được là "Máy chủ không đóng cửa"
Parker Hutchinson

Tôi đoán vậy, nhưng nhìn thoáng qua postgres --helpkhông thấy ngay cờ "m".
bma,

brew reinstall postgresql stackoverflow.com/a/39781473/6086226 đã làm việc cho tôi
Derk Jan Speelman

Câu trả lời:


161

Có cùng một vấn đề pg_ctl: server does not shut down,. Hơn nữa, ps auxwww | grep postgrescho thấy không có postgres nào đang chạy, trong khi pg_ctl -D /usr/local/var/postgres statuscho thấy rằng postgres đang chạy. Khởi động lại máy mac của tôi không giúp được gì, tôi thậm chí đã đi xa đến mức đặt lại SMC, nhưng SO Q / A này đã cho tôi ý tưởng về điều cần tìm tiếp theo: vấn đề về bia.

Theo dòng suy nghĩ này, tôi tìm thấy bài đăng blog hữu ích này , dẫn đến các lệnh sau giải quyết vấn đề này cho tôi:

$ brew services list
$ brew services restart postgresql

Hy vọng điều này sẽ giúp một ai đó.

Cập nhật - Lệnh không xác định: dịch vụ

Sau một chút điều tra sau một trong các nhận xét ('Lệnh không xác định: dịch vụ'), tôi phát hiện ra rằng các tác giả của Homebrew đã quyết định xóa serviceskhỏi repo, vì không ai muốn duy trì mã này.

Bạn có thể đọc thêm về nó ở đâyở đây (vé github liên quan).

Sau khi tìm hiểu thêm, tôi đã tìm thấy repo này bổ sung servicestrên máy Mac.

Đây là cách tôi 'trở lại' 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

Đây là một giải pháp được đề xuất khác: /apple/150300/need-help-using-homebrew-services-command . Tôi đã không tự mình kiểm tra nó, vì vậy không biết nó có hoạt động hay không.


4
Điều này làm mất đi rất nhiều bí danh bash mà tôi đã tích lũy trong nhiều năm để làm điều tương tự. Nhìn tốt!
Alex Kestner

2
@naturalc đã cập nhật câu trả lời của tôi để trả lời bình luận của bạn. cho tôi biết nếu nó hoạt động tốt cho bạn.
Neara

1
Đã giải quyết vấn đề cho tôi. Cảm ơn!
TotoroTotoro

Đối với bất kỳ người dùng Rails nào ngoài đó, tôi đã cố gắng dừng Postgres thông qua lệnh Rake thông thường , bundle exec rake pg:stop. Nhưng điều đó đã không hoạt động, dẫn đến pg_ctl: server does not shut down. Cách giải quyết brew services restart postgresqlđã làm việc cho tôi. 👌
zbeat

Cảm ơn anh bạn! Tôi không thể hình dung rằng nó thực sự là một dịch vụ homebrew đang chạy. Đẹp quá!
Adrian Grzywaczewski

54

$ brew services list

$ brew services stop postgresql

Đang dừng postgresql, nhưng có thể mất một lúc → Đã dừng thành công postgresql(nhãn: homebrew.mxcl.postgresql)


2
Cố gắng dừng lại pg_ctl ... stopmà không có kết quả. Sau khi tôi chạy các dịch vụ bia, dừng postgresql, pg_ctl ... của tôi dừng hoạt động lại như mong đợi ngay bây giờ. Không chắc làm thế nào, nhưng tôi rất vui vì điều này đã giải quyết được nó!
Iggy

Tôi cần thêm phiên bản với nó. brew services stop postgresql@10
Ivor Scott

12

Tôi đã có một vấn đề tương tự. Tôi đã quên rằng tôi đã tích hợp 'trưa' vài ngày trước và đang sử dụng nó như một trình bao bọc khởi chạy để bắt đầu plist ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistkhi khởi động. pg_ctl không hiệu quả do dòng mã <key>KeepAlive<key>sau:

      <?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>

Cố gắng loại bỏ quy trình trực tiếp không hoạt động vì tôi cần dỡ plist.

    launchctl unload homebrew.mxcl.postgresql.plist

Lưu ý rằng tệp .plist có thể không có cùng tên. Trong trường hợp của tôi, nó đã được homebrew.mxcl.postgresql92.plist. Tự kiểm tra bản thân đi.
MCP

12

Tôi đang gặp sự cố tương tự ... việc xóa tác nhân khởi chạy đã giải quyết được sự cố cho tôi:

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

9

Tôi đã sửa lỗi này bằng cách sử dụng lệnh

pg_ctl stop -m immediate

pg_ctl start

Tôi không cần phải dỡ plist theo cách này.


5
Tôi nhận được pg_ctl: không có thư mục cơ sở dữ liệu cụ thể và biến môi trường PGDATA unset
SuperUberDuper

1
nhận được lỗi tương tự: không có thư mục cơ sở dữ liệu cụ thể và biến môi trường PGDATA unset
jjj

2
@SuperUberDuper Bạn nên thêm -D và chỉ định vị trí db. Ví dụ: pg_ctl dừng -m ngay lập tức -D. "." là viết tắt của thư mục hiện tại, giả sử bạn đang ở trong thư mục cơ sở dữ liệu
Hatzil 13/1218

8

hóa ra rằng brew.plist của tôi cho các postgres cần được dỡ bỏ và xóa tại ~ / Library / LaunchAgents /. Sau khi khởi động lại, tất cả đều tốt ... câu hỏi đóng.


7
vui lòng mở rộng về điều này
SuperUberDuper 29/02/16

7

Khi dựa vào PostgreSQL được cài đặt sẵn, lệnh sau hoạt động để tắt nó.

> brew services stop postgresql

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

Như đã đề cập trong một câu trả lời khác, việc lướt qua danh sách các quy trình và sau đó giết bất kỳ thứ gì liên quan đến postgres không hoạt động.

ps aux | grep postgres
kill $PID

0

Tôi đã không postgresbắt đầu thông qua brew services, vì vậy không thể dừng nó theo cách đó.

Điều này đã hiệu quả.

$ 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

Sử dụng -Dparamater từ trên cao.

$ pg_ctl stop -D "/Users/username/Library/Application Support/Postgres/var-9.6"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.