Minecraftをシャットダウンしたとき、それが完全に閉じないため、解決策を探しましたが何も見つかりませんでした。しばらくして私はあきらめて、閉じたいときに手動で殺すことにしました。
Pgrepを使用してターミナルでkillしても影響がないようですが、システムモニターを開いて右クリックしてkillすると、正常にシャットダウンします。
システムモニターの方法とターミナルの方法の違いは何ですか?システムモニターは、バックグラウンドでkillコマンドが実行しない他のことを実行しますか?
kill
コマンドとシステムモニターの 'kill'の間に違いはありません。システムモニターはkill
にいくつかの引数を提供するだけです。
kill <process-number>
、実際にそのプロセスにシグナルを送信して正常に終了しています。これはSIGTERMと呼ばれます。無条件にプロセスを強制終了し、データ損失を引き起こす可能性がある場合は、別のシグナルを送信する必要があります。
kill -9 <process-number>
これにより、SIGKILLがプロセスに送信され、プロセスは直ちに実行を終了します。システムモニターはkill -9
プロセスを単に「閉じる」のではなく、プロセスを「強制終了」するように依頼した場合。
端末を使用してアプリケーションを強制終了した場合、次のように実行したと思います。
kill 1234
システムモニターで、プロセスを選択し、KILLをプロセスに送信することを選択しました。
デフォルトでは、プレーンkill $pid
を使用するときにプロセスに送信されるシグナルはTERM
です。これにより、アプリケーションを正常に終了できます。ただし、KILL
を送信すると、プログラムはすぐに完全にシャットダウンする(つまり、データを保存する)ことができなくなります。コマンドラインからKILL信号を送信するには、次のコマンドを使用します。
kill -KILL 1234
(このコマンドを実行する別の方法はkill -9 1234
です。これは好みの問題です)
これは、デフォルトではpgrep killがSIGTERM(終了)を送信するためです。アプリケーションが良好な状態でない場合、SIGTERMは機能しません。システムモニタの "Kill Process"はSIGKILLコマンドを送信し、文字通りそれを強制終了します。送信される2つの異なる信号です。これをpgrepで実行する場合は、kill -9
を使用します。-9
オプションはSIGKILLシグナルを送信し、システムモニターの「キルプロセス」とまったく同じになります。
参考までに、kill
コマンドの名前は少し誤解を招きます。 man kill
さんのコメント:
kill-プロセスにシグナルを送信します
これは任意の信号である可能性があります。すべての信号のリストを表示するには、man --sections=7 signal
と入力して下にスクロールします。
次に言う:
KillのデフォルトのシグナルはTERMです。
詳細は https://askubuntu.com/a/716814/11929 を参照してください。