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

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

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

답변1

다음을 수행하는 것이 안전합니다.

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은 일반적으로 명령줄에 표시됩니다.

답변2

같은 명령에서 kill과 postgres를 보면 긴장됩니다. 만을 사용하여 질문에 답하려면 pg_ctl다음과 같습니다.

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

-X 인수는 .psqlrc파일을 무시하라고 말합니다. 이는 쿼리에 소요된 시간을 내보내도록 psql을 구성한 경우에 유용합니다(\timing 명령을 통해).

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

-c 인수에는 실행할 SQL 코드가 포함됩니다.

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

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

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

답변3

이것은 나를 위해 작동합니다.https://stackoverflow.com/a/5408501/248616

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';

답변4

간단히 명령을 실행할 수 있습니다

systemctl stop postgresql

다시 시작하고 싶을 때 실행하세요.

systemctl start postgresql
  • 이 명령에는 다음을 추가해야 할 가능성이 높습니다.sudo

관련 정보