![모든 postgres 프로세스를 훌륭하게 중지하는 방법](https://rvso.com/image/1048304/%EB%AA%A8%EB%93%A0%20postgres%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%ED%9B%8C%EB%A5%AD%ED%95%98%EA%B2%8C%20%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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]/environ
ps -fHC postgres
postgres
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