PostgreSQL 서버가 macOS에서 실행 중인지 확인

Aqsa Amir 2023년6월20일
  1. PostgreSQL 서버가 macOS에서 실행 중인지 확인
  2. grep 명령을 사용하여 PostgreSQL의 상태 확인
  3. pg_ctl status 명령을 사용하여 PostgreSQL의 상태 확인
  4. pg_isready 명령을 사용하여 PostgreSQL의 상태 확인
  5. PostgreSQL의 상태를 확인하는 기타 명령
  6. 결론
PostgreSQL 서버가 macOS에서 실행 중인지 확인

이 문서는 MAC 운영 체제에서 PostgreSQL 서버의 상태를 찾는 데 도움이 되도록 특별히 구성되었습니다. 이 기사에서 여러 BASH 명령이 언급되었습니다.

PostgreSQL의 상태와 실행 여부를 확인하는 데 사용할 수 있습니다.

참고: 기사 전체에서 언급된 BASH 명령은 모든 운영 체제에서 작동하지 않을 수 있습니다. 그러나 macOS에서 잘 작동하는 것으로 알려져 있습니다.

수많은 BASH 명령이 서로에 대한 대안으로 언급되었습니다. 하나의 명령이 작동하지 않으면 다른 명령을 실행하여 PostgreSQL 서버의 상태를 확인할 수 있습니다.

PostgreSQL 서버가 macOS에서 실행 중인지 확인

PostgreSQL의 상태를 확인하기 위해 BASH 명령으로 이동하여 다양한 명령을 사용할 수 있습니다. 이 문서는 PostgreSQL이 실행 중인지 여부를 확인하는 데 도움이 되는 명령에 중점을 둡니다.

BASH 명령을 자세히 알아보기 전에 PostgreSQL에 액세스하려고 할 때 받을 수 있는 오류 메시지를 살펴보겠습니다.

오류 메시지

다음 메시지를 살펴보고 익숙한지 아닌지 분석해 봅시다.

[~/dev/working/sw] sudo bundle exec rake db:migrate rake aborted!
could not connect to the server: Connection refused
Is the server running on the host "localhost" and accepting TCP/IP connections on port 5432?

pg_ctl 명령을 사용할 때 나타나는 또 다른 오류 메시지는 다음과 같습니다.

> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory

다음은 시스템에서 PostgreSQL을 실행하려고 시도하는 동안 발생할 수 있는 오류 메시지의 두 가지 예입니다. 이러한 오류는 초기화 프로세스 중에 잘못된 경로 설정으로 인해 발생할 수 있습니다.

initdb 명령을 사용하여 PostgreSQL 데이터베이스 클러스터를 생성할 때 PostgreSQL의 위치를 가리키는 올바른 경로를 제공해야 합니다. 경로 초기화에 오류가 있는 경우 이를 수정한 후 PostgreSQL이 작동하는지 확인해야 합니다.

여러 BASH 명령 옵션이 아래에 제공되었으므로 PostgreSQL의 상태를 확인하기 위해 이들 중 하나를 선택할 수 있습니다. 각 명령에 대해 자세히 살펴보겠습니다.

grep 명령을 사용하여 PostgreSQL의 상태 확인

프로세스가 실행 중인지 여부를 확인하는 데 도움이 되는 첫 번째 BASH 명령은 다음과 같습니다.

> ps auxwww | grep postgres

또는 다음과 같은 동일한 명령의 다른 버전을 시도할 수 있습니다.

> ps aux | grep postgres

반환 메시지는 PostgreSQL이 실행 중인지 여부를 식별하는 데 도움이 됩니다. PostgreSQL 서버를 시작하려면 다음과 유사한 명령을 찾아야 합니다.

/Library/PostgreSQL/12/bin/postgres -D /Library/PostgreSQL/12/data

위 명령에서 12는 PostgreSQL 버전을 나타냅니다. 다른 버전의 PostgreSQL이 설치되어 있으면 12 위치에 다른 숫자가 표시됩니다.

PostgreSQL 서버를 시작하려면 다음 명령을 사용하십시오.

/Library/PostgreSQL/12/bin/pg_ctl start-D /Library/PostgreSQL/12/data -l postgres.log

참고: /Library/PostgreSQL/12/data는 초기화 프로세스에서 initdb를 사용하여 사용자가 생성한 임의의 데이터베이스 클러스터 디렉토리입니다.

이러한 명령은 PostgreSQL이 실행 중인지 여부를 식별하는 데 도움이 될 수 있습니다. PostgreSQL이 실행 중이 아니면 위의 명령으로 시작할 수 있습니다.

pg_ctl status 명령을 사용하여 PostgreSQL의 상태 확인

PostgreSQL의 상태를 확인하는 또 다른 BASH 명령은 다음과 같습니다.

> pg_ctl status

pg_ctl status 명령은 포스트마스터 프로세스의 존재를 확인합니다. 이 명령은 프로세스를 찾을 수 있으면 실행 중이라고 보고합니다.

참고: 실행 중 상태는 포스트마스터가 다른 연결을 수락하거나 추가 쿼리를 실행할 준비가 되었음을 나타내지 않습니다.

PGDATA 환경 변수는 PostgreSQL의 상태를 확인하기 위해 일부 편집이 필요할 수도 있습니다. 다음은 PostgreSQL ~/.bashrc 파일의 설명입니다.

export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'

환경 변수를 편집한 후에는 다음 명령을 실행하여 파일을 소싱해야 합니다.

> . ~/.bashrc

그런 다음 BASH에서 PostgreSQL에 대한 show-pg-status 명령을 실행할 수 있습니다.

> show-pg-status
pg_ctl: server isrunning (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres

pg_ctl 명령을 사용하여 PostgreSQL 서버를 수동으로 시작할 수도 있습니다. 명령을 실행하기 전에 PostgreSQL의 경로를 결정하는 것이 중요합니다.

경로는 which postgres 명령을 사용하여 결정할 수 있습니다. 그런 다음 PostgreSQL을 수동으로 시작하는 데 사용할 수 있습니다.

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

pg_isready 명령을 사용하여 PostgreSQL의 상태 확인

살펴봐야 할 또 다른 흥미로운 명령은 pg_isready 명령입니다. PostgreSQL 서버의 연결 상태를 확인하기 위해 사용합니다.

> pg_isready

pg_isready 명령을 실행하면 다음 값 중 하나가 반환됩니다.

  1. 0 - 서버가 평소와 같이 연결을 수락함을 나타냅니다.
  2. 1 - 서버가 연결을 수락하지 않으면 반환됩니다.
  3. 2 - 연결 시도 후 응답이 수신되지 않았음을 나타냅니다.
  4. 3 - 연결 시도가 이루어지지 않았음을 나타냅니다. 예를 들어 유효하지 않은 매개변수를 사용하는 등의 오류 때문일 수 있습니다.

PostgreSQL의 상태를 확인하는 기타 명령

PostgreSQL의 상태를 확인하는 데 사용할 수 있는 BASH 명령에 대한 몇 가지 다른 옵션이 있습니다.

psql 명령 또는 pgrep postgres 명령을 사용하여 PostgreSQL 서버가 MAC에서 실행 중인지 확인하십시오.

결론

운영 체제마다 동일한 기능을 수행하기 위해 서로 다른 명령이 필요합니다. 기사에서 언급한 BASH 명령은 macOS에서 잘 작동하는 것으로 알려져 있습니다. 그러나 다른 운영 체제에서도 이를 시도할 수 있습니다.