모든 postgres 프로세스를 멋지게 중지하는 방법


33

pg_ctl데이터베이스 디렉토리가 무엇인지 기억하지 못하거나 PGDATA 환경 변수가 정의되지 않은 경우 모든 postgres 프로세스를 어떻게 중지 합니까?

답변:


58

다음이 안전합니다.

sudo pkill -u postgres

user로 실행중인 모든 프로세스가 종료됩니다 postgres. 또는:

pkill postgres

그러면 'postgres'라는 모든 프로세스가 종료됩니다.

마십시오 하지 사용 kill -9( kill -KILL). kill(옵션없이) 그냥 SIGTERM원하는 것을 수행합니다.

또는 PostgreSQL에 연결할 수 있으면 pgdata 위치를 확인할 수 있습니다. 예를 들면 다음과 같습니다.

sudo -u postgres psql -c "SHOW data_directory";

또는에서 환경 변수 를 확인하여에서 포스트 마스터를 식별합니다 . 다른 프로세스 의 부모 인 것을 찾으십시오 . 예를 들면 다음과 같습니다./proc/[postmaster pid]/environps -fHC postgrespostgres

postgres   794     1  0 Nov06 ?        00:00:03 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data -p 5432
postgres   857   794  0 Nov06 ?        00:00:00   postgres: logger process   
postgres   871   794  0 Nov06 ?        00:00:00   postgres: checkpointer process   
postgres   872   794  0 Nov06 ?        00:00:00   postgres: writer process   
postgres   873   794  0 Nov06 ?        00:00:00   postgres: wal writer process   
postgres   874   794  0 Nov06 ?        00:00:03   postgres: autovacuum launcher process   
postgres   875   794  0 Nov06 ?        00:00:07   postgres: stats collector process   

datadir은 일반적으로 명령 행에 표시됩니다.


3

그것은 같은 명령으로 kill과 postgres를 보는 것을 긴장하게 만듭니다. 만 사용하여 질문에 대답하려면 다음과 pg_ctl같습니다.

pg_ctl -D $(psql -Xtc 'show data_directory') stop

-X 인수는 .psqlrc파일 을 무시하도록 지시 합니다. 이는 psql이 \ timing 명령을 통해 쿼리에 걸리는 시간을 내도록 구성한 경우에 유용합니다.

-t 인수는 출력 맨 위에있는 열 이름과 생성 된 총 행 수를 제거하도록 지시합니다.

-c 인수는 실행될 SQL 코드를 포함합니다.

베어 psql -c 'show data_directory'를 실행 하면 아마도 다음과 같은 출력이 생성됩니다.

      data_directory
--------------------------
 /path/to/postgresql/data
(1 row)

따라서 이것을 통해 틱하면 pg_ctl의 -D 인수로 $( ... )전달 /path/to/postgresql/data되어 순서대로 데이터베이스가 중지됩니다.


1
이것이 공식적으로 작동하는 것이라면 이것이 정답이어야한다고 생각합니다. 새로운 옵션입니까?
matt

이 솔루션은 사용되는 옵션과 PGDATA환경 변수 의 사용법을 설명하면 도움이됩니다 . Linux 사용자 이름 아래에 해당 데이터베이스가 없으므로이 명령을 실행하려고하면 실패했습니다.
Stephane

show data_directory데이터베이스를 지정하지 않고 실행할 수 있으며 실제로 내 서버에 내 이름의 데이터베이스가 없습니다. PGDATA도 필요하지 않으므로 실패에 대해 설명하지 못했습니다.
15:24에

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.