すべての postgres プロセスをうまく停止する方法

すべての postgres プロセスをうまく停止する方法

pg_ctlデータベース ディレクトリが何であるか思い出せず、PGDATA 環境変数も定義されていない場合、すべての postgres プロセスを (または他の方法で) 適切に停止するにはどうすればよいでしょうか。

答え1

以下のことは安全です:

sudo pkill -u postgres

これにより、ユーザーとして実行されているすべてのプロセスが強制終了されますpostgres。または:

pkill postgres

これにより、「postgres」という名前のすべてのプロセスが強制終了されます。

するないkill -9( )を使用しますkill -KILLkill(オプションなしで) は を実行しますSIGTERM。これが目的の動作です。

あるいは、PostgreSQL に接続できる場合は、pgdata の場所を確認することもできます。例:

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

...または、 の環境変数をチェックして、 で postmaster を識別します。他のプロセスの親となるものを探します。例:/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   

そのデータディレクトリは通常、コマンド ラインに表示されます。

答え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

関連情報