PostgreSQL 서버가 중지되지 않습니다


87

Mac OS X 10.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.log: https://gist.github.com/anonymous/6106182


1
않는 pg_ctl -D /usr/local/var/postgres stop -m immediate다른 두 시도보다 더 얻을?
bma jul.

즉 실행하는 것과 같은 것 pg_ctl -D /usr/local/var/postgres stop -mi하고 네 모든 I get 및은 "서버가 종료되지 않습니다"입니다
파커 허친슨

나는 그것을 짐작했지만, 잠시 훑어 보아도 postgres --help"m"플래그가 즉시 표시되지 않았습니다.
bma jul.

brew reinstall postgresql stackoverflow.com/a/39781473/6086226 저를 위해 일했습니다
Derk Jan Speelman

답변:


161

같은 문제가 발생했습니다 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

이것이 누군가를 도울 수 있기를 바랍니다.

업데이트-알 수없는 명령 : 서비스

댓글 중 하나 ( '알 수없는 명령 : 서비스')에 따라 약간의 조사를 수행 한 후 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

다음은 또 다른 권장 솔루션입니다 : /apple/150300/need-help-using-homebrew-services-command . 직접 확인하지 않았으므로 작동 여부와 방법을 알 수 없습니다.


4
이것은 똑같은 일을하기 위해 수년 동안 축적 한 많은 bash 별칭을 사용하지 않습니다. 잘보세요!
Alex Kestner 2014 년

2
@naturalc는 귀하의 의견에 대한 응답으로 내 답변을 업데이트했습니다. 그것이 당신을 위해 잘 작동하는지 말해주십시오.
Neara

1
나를 위해 문제를 해결했습니다. 감사!
TotoroTotoro 2016

Rails 사용자의 경우 일반적인 Rake 명령을 통해 Postgres를 중지하려고했습니다 bundle exec rake pg:stop. 그러나 그것은 작동하지 않아 pg_ctl: server does not shut down. 해결 방법 brew services restart postgresql은 저에게 효과적 이었습니다. 👌
zbeat 17:06에

고마워요! 실제로 실행중인 홈브류 서비스라는 것을 알 수 없었습니다. 멋지네요!
Adrian Grzywaczewski

54

$ brew services list

$ brew services stop postgresql

중지 postgresql중이지만 시간이 걸릴 수 있음 → 성공적으로 중지됨 postgresql(라벨 : homebrew.mxcl.postgresql)


2
pg_ctl ... stop아무 소용없이 중지를 시도했습니다 . brew services stop postgresql을 실행하면 pg_ctl ... stop이 다시 예상대로 작동합니다. 방법은 모르겠지만이 문제가 해결되어 기쁩니다!
Iggy

버전을 추가해야했습니다. brew services stop postgresql@10
Ivor Scott

12

비슷한 문제가있었습니다. 며칠 전에 내가 'lunchy'를 통합했다는 사실을 잊고 시작시 plist ~/Library/LaunchAgents/homebrew.mxcl.postgresql.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

9

명령을 사용 하여이 오류가 발생했습니다.

pg_ctl stop -m immediate

pg_ctl start

이런 식으로 plist를 언로드 할 필요가 없습니다.


5
나는 pg_ctl을 얻는다 : 데이터베이스 디렉토리가 지정되지 않았고 환경 변수 PGDATA가 설정되지 않음
SuperUberDuper

1
동일한 오류가 발생합니다 : 지정된 데이터베이스 디렉토리가없고 환경 변수 PGDATA가 설정되지 않음
jjj

2
@SuperUberDuper -D를 추가하고 db 위치를 지정해야합니다. 예 : pg_ctl stop -m immediately -D. "." 데이터베이스 디렉토리에있는 가정은 현재 디렉토리를 의미합니다
Hatzil

8

postgres에 대한 내 brew.plist를 ~ / Library / LaunchAgents /에서 언로드하고 제거해야한다는 것이 밝혀졌습니다. 다시 시작한 후에는 모든 것이 좋습니다. 마지막 질문입니다.


7
이것에 확장하십시오
SuperUberDuper

7

양조 설치된 PostgreSQL을 사용하는 경우 다음 명령을 사용하여 종료했습니다.

> brew services stop postgresql

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

다른 답변에서 언급했듯이 프로세스 목록을 살펴본 다음 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.