web-dev-qa-db-ja.com

端末を介してGUIアプリケーションをソフトキルする方法は?

アプリケーションウィンドウにグラフィカルにアクセスせずに、使いやすい "今すぐ終了してください"の方法でGUIアプリケーションを閉じる方法はありますか?

たとえば、Gnome/Xディスプレイがクラッシュして黒くなった場合は、tty2に切り替えて、Firefoxなどのアプリケーションを構成を保存できるように閉じます。

22
jfk

通常、SIGHUPを使用して、アプリケーションを「フレンドリー」に閉じることができます(グラフィカルインターフェイスの有無にかかわらず)。

kill -HUP <application_pid>

[〜#〜]編集済み[〜#〜]:その他の情報を追加しました

SIGHUPの処理方法はアプリケーションに依存するため、 Dave が示すように、この信号がマスクまたは処理されることがあります。ただし、ほとんどすべてのinteractiveアプリケーションはSIGHUPで正常に終了します。

反対に、通常はこのスキーマに従うことを認めざるを得ません。

kill -HUP <application_pid>
# check if application is still running
kill -INT <application_pid>
# check if application is still running
kill -KILL <application_pid>

明らかに、最後のコマンドはそれほど「友好的」ではありません。

19
andcoz

あなたは試してみたいかもしれません:

kill -TERM <pid>

または

kill -TERM `pidof <application_name>`

少なくとも一部のシステムでは、システムがシャットダウンしているときに、すべてのプロセスがKILL(9)シグナルを送信する前にTERM(15)シグナルを送信します。 HUPは多くの場合、アプリケーションに構成を再ロードさせるだけですが、プロセスごとに異なる場合があります。

5
Dave

アプリケーションに終了して構成を保存するように指示する一般的な方法はありません。特定のフレームワークを使用してアプリケーションに通知する方法があります。一部のKDE 3アプリケーションではdcop kfoo MainApplication-Interface quit。アプリケーションが確認を求めるダイアログボックスを表示する場合があることに注意してください。

Xディスプレイが使用できなくなった場合は、Xサーバーを強制終了してください。押す Ctrl+Alt+BackSpace;それが機能しない場合は、XサーバープロセスをSudo pkill -x Xorgで強制終了します。 Xサーバーが停止すると、すべてのXアプリケーションに通知が送られ、正常に終了しようとします(すべてが保存される保証はありませんが、最善策です)。

検討したい他の2つのコマンドはwmctrl -cおよびxdotool windowkillwindowkill パッチに興味がないかもしれないが、windowdeleteがあなたが求めているものとまったく同じかどうかはわかりません。

1
Jamie Kitson

@andcozの答えのように、アプリケーションのPIDがわからない場合(私はそれを暗記していないと想定しています)、これを試してください:

kill -HUP `pidof [application_name]`
1
n0pe