pkill -9でFirefoxを終了したにもかかわらず、Firefoxが死ぬことを拒否するのはなぜですか?

pkill -9でFirefoxを終了したにもかかわらず、Firefoxが死ぬことを拒否するのはなぜですか?

Red Hat Linux コンピュータで Firefox を終了するには、次のコマンドを実行します。

[subhrcho@slc04lyo ~]$ pkill -9 -f firefox
[subhrcho@slc04lyo ~]$ 

ただし、アプリケーション - >インターネット - > Firefoxを介してFirefoxを呼び出そうとすると、次のメッセージが表示されます。

Firefoxは実行中ですが応答しません。新しいウィンドウを開くには、まず既存のFirefoxプロセスを閉じるか、システムを再起動する必要があります。

答え1

あなたのFirefoxが終了しました。誤解を招くエラーメッセージ(*)のため、まだ実行中と考えられます。これは以前の結果である可能性が高いですkill -9

kill -9必ず必要な場合以外は使用しないでください。ほとんどの場合、これは必ずしも必要ではありません。

あなたの場合は、次のことが起こっていると思います。

  1. Firefoxは実行中です。
  2. 素晴らしいですpkill -9 -f firefox。 Firefoxは死んだ。すぐに(**).したがって、プロファイル ディレクトリからロック ファイルを削除できません。
  3. 新しいFirefoxプロセスを起動します。
  4. 新しいFirefoxプロセスは、ロックファイルがまだプロファイルディレクトリにあることを確認し、他のFirefoxプロセスがまだ実行されていると思います。その後、誤解を招くエラーメッセージで開始を拒否します。
  5. あなたはエラーメッセージに混乱し、Firefoxが以前に終了していないと思います。
  6. Firefoxを終了しようとしましたが、実行中のFirefoxプロセスがないため、効果はありません。一方、ロックされたファイルがまだ存在するため、同じ誤解を招くエラーメッセージが表示され続けます。

Firefoxが終了したと確信している場合(確認pgrep -fl firefox)、プロファイルディレクトリからロックファイルを手動で削除できます。詳細については、以下の mozillazine ドキュメントを参照してください。http://kb.mozillazine.org/Profile_in_use

(*)このエラーメッセージは実際に他のプロセスを確認しませんが、他のプロセスが実行中であることを示すため、誤解を招く可能性があります。ただロックファイルを確認してください。したがって、エラーメッセージはファイルがロックされていることを示しているだけです。他のプロセスに必ずしも必要ではありません。

(**)自分で取り除く前にクリーンアップする機会を与えるのではなく、すぐに殺しました。今殺してもはい結果の意図された効果kill -9は通常、ユーザーが意図したり期待したりしません。

これに関する詳細な説明を読んでください。


背景情報:

Firefox はプロファイルディレクトリにロックファイルを保持します。ロックファイルの目的は、2つのFirefoxインスタンスが同時に同じ設定ファイルにアクセスするのを防ぐことです。

Firefoxを実行すると、まずロックファイルを確認します。ロックファイルがない場合、Firefoxは独自のロックファイルを配置し、通常どおり起動します。すでにロックファイルがある場合、Firefoxはそのプロファイルが別のFirefoxインスタンスですでに使用されていると仮定し、すでに実行されているインスタンスがあるという誤ったエラーメッセージを表示します。

Firefoxはロックされたファイルのみを確認するため、誤解を招く可能性があります。実際のFirefoxプロセスが実行されているかどうかは確認されません。時々、実行中の他のFirefoxインスタンスがない場合があります。ロックファイルだけが残ります。

Firefoxを正常に終了すると(閉じるボタンまたはをマウスでクリックalt+f4)、すぐに終了しません。代わりに、「終了ルーチン」を開始します。これには、ロックされたファイルの削除が含まれます。プロセスを観察すると(たとえばを使用してtop)、Firefoxがプロセスリストからすぐに消えないことがわかります。

Firefoxを使用している場合kill(いいえ-9)、Firefoxは「終了」しません。代わりに信号を送信します。 Terminateという信号SIGTERMは通常、「即時終了」信号として理解されます。シグナルを受信すると、Firefoxは上記のシャットダウンルーチンを起動します。

ctrl+cまた、ターミナル(Firefoxが実行されているのと同じターミナル)を押すと信号が送信されます。今回はSIGINT中断のためでした。これはSIGTERMほとんどのエンドユーザープログラムと意味上同じです。 Firefox は終了ルーチンを起動します。

(注:プログラムはこれらのシグナルを受信した後に終了する必要はありません。一部のプログラムは特定のタスクを実行して実行を続けますが、これはエンドユーザープログラムでは一般的ではありません。)

kill -9は違います。 Firefoxブラウザが信号を受信できない場合kill -9。出口ルーチンは開始されません。代わりに、もう存在しません。その場で。中間段階。ディスクに書き込まれていない内容はすべて失われます。代わりに、ディスク上のすべてのコンテンツはディスクに残ります。ロックされたファイルはディスクに残ります。

Firefox、死すぐにkill -9終了ルーチンを開始する機会がないため、ロックファイルを削除できません。その後、Firefoxを再起動するとロックファイルが表示され、誤解を招くエラーメッセージで起動が拒否されます。

そのため、必ずしも必要なものでなければ使用しないでください。kill -9ほとんどの場合は使用しません。

kill -9この質問と回答(およびコメント)を読んでみてはいかがですか?いつ-9プロセスを終了しないでください。

シグナルに関する追加情報:https://en.wikipedia.org/wiki/Signal_(IPC)

答え2

私が知っている限り、Firefoxはlock実行時に呼び出されるか、同様のファイルを生成します。~/.mozilla/firefox/<your_profile>/正確な動作はわかりませんが、時にはFirefoxの2番目のインスタンスを実行できない場合、またはFirefoxを閉じた後に削除されなかった場合は、単一のインスタンスをまったく実行できないことがあります。ファイルを削除してみてください。役に立ちます。

答え3

私の経験では、システムモニタに示すように、Firefoxが最終的に完全にシャットダウンするのに最大1分(またはそれ以上)かかることがあります。 Red Hatについてはわかりませんが、システムモニタがある場合はそれを使用してFirefoxがまだ実行されていることを確認し、再度実行した場合はkillコマンドを実行できます。これは可能です。

答え4

kill -9 `pidof firefox`数秒待ってください。

関連情報