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


21

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

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

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


2
VNCを使用してデスクトップにリモートでアクセスし、グラフィカルに「閉じる」をクリックするとオーバーヘッドが大きくなると仮定する必要があります。
ブライアンスウィフト

回答:


33

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

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

kill -s TERM <pid>

1
ええ、OPの前提は間違っています。killコマンドが正常なシャットダウンを試みます。その場合、アプリケーションが正常に終了しない場合、壊れています。(そして、アプリケーションの大半は壊れていません。)
デイビッドシュワルツ

2
Firefoxは(壊れている)ようです。を実行するとkill -s TERM <firefox-pid>、正常にシャットダウンせず、再度起動すると、クラッシュしたセッションを回復するかどうかを尋ねられます。:ため息:
ウィルソンF

6

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

pkill -TERM <process-name>

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.