web-dev-qa-db-ja.com

Linux:コマンドラインでプログラムを閉じる(強制終了しない)

一部のアプリケーションでは、実行中のインスタンスを1つしか許可しません(同じワークスペースを使用する場合は、Eclipseなど)。したがって、別の場所からログインする場合、以前に別の場所からログインしたときに開いていたアプリケーションを強制終了する必要があります。

実行中のプロセスを強制終了するには、常にkillコマンドを使用します。ただし、プロセスを強制終了すると、将来の使用に役立ついくつかの状態が保存されない場合があります。ただし、たとえば閉じるボタンをクリックして適切に「閉じる」と、状態が適切に保存されます。

コマンドラインからアプリケーションを適切に「閉じる」方法はありますか?これはアプリケーションによって異なる可能性があるので、もう少し一般的にしましょう。実行中の別のアプリケーションに信号を送信する方法です。この信号は、トップバーの「閉じる」ボタンをクリックするように機能しますか?

21
Vendetta

デフォルトでは、killコマンドはSIGTERM(終了信号)を実行中のプロセスに送信します。 SIGKILLは応答する可能性がないプロセスを強制的に強制終了するのとは異なり、SIGTERMシグナルはプロセスによって傍受され、プロセスを正常に終了させることができます。実際にdoesが正常に終了するかどうかは、プロセス自体に完全に依存しています。簡単に自分自身を殺したり、シグナルを完全に無視したりできます。

コマンドラインで明示的にすることで、他の信号の代わりにSIGTERMを送信していることを確認できます。

kill -s TERM <pid>
33
goldPseudo

pkillではなくkillを使用する場合、TERMを指定する構文は次のとおりです。

pkill -TERM <process-name>

pkillはkillに似ていますが、IDではなくプロセス名を使用できます。 man pkill

6