web-dev-qa-db-ja.com

プロセスを強制終了すると、そのプロセスによって開かれたすべてのファイルが閉じられますか?

データベースへの接続が開いているプロセスを強制終了したい。プロセスを強制終了した場合、データベースのロックが解除されていることを確認できますか?

2
Alex

「呼び出しプロセスで開いているすべてのファイル記述子、ディレクトリストリーム、変換記述子、およびメッセージカタログ記述子を閉じる必要があります」。これは、シグナルが原因でプロセスが終了している場合(つまり、「強制終了」によって)に発生するはずだとPOSIXが言っていることです。

したがって、サーバーにアクセスするプロセスであるクライアントは、ネットワーク接続の終了を確実に閉じます。 client( "your process")が強制終了されたときのserver( "database")の動作はサーバー次第です決定する(検出し、それに基づいて行動する)。

ネットワーク接続はクライアント側で確実に閉じられますが、この場合、サーバーがセッションで何をするかはわかりません。テーブルまたはテーブルの行にロックがある場合、いつ解放する必要がありますか?

MySQLにはアイドルセッションタイムアウトがあり、その後、消えるクライアントによって保持されているロックを解放します( このStackOverflowの質問 を参照)。使用する特定のデータベースのドキュメントを調べて、何が起こるかを確認する必要がありますが、ほとんどの場合、何らかの形のアイドルタイマーが関係していると思います。

7
Kusalananda

はい、でも...

プロセスを強制終了するとファイルが閉じますが、ソケットまたはその他の接続を介して接続されたプロセスのkillがすぐに成功しないことは珍しくありませんnetwork接続(たとえばデータベースで使用)- killingプロセス。たとえば、psを使用して閉じるのを待っているプロセスが表示されます。

1
Thomas Dickey

通常、このプロセスで開かれたすべてのファイルを強制終了します。ただし、一部のファイル記述子がどこかで使用されている場合、それは確実に閉じられません。

0
Han.s