![プロセスを終了する非攻撃的な方法は何ですか? [コピー]](https://linux33.com/image/87635/%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B%E9%9D%9E%E6%94%BB%E6%92%83%E7%9A%84%E3%81%AA%E6%96%B9%E6%B3%95%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
コマンドライン(FirefoxやThunderbirdなど)でプログラムを閉じたいです。プログラムはうまく機能し、理論的にはファイル>閉じるを選択します。ただし、コマンドラインでこれを実行したいので、これはオプションではありません。プロセスを終了できますが(例pkill firefox
:)、リスニングではプログラムを終了する非常に残酷な方法です。実際、私は特にプログラムが中断されたときに最後の手段としてこれを行うのに慣れています。正直なところ、これがプログラムを終了する正しい方法であるかどうかはわかりません。うん?それともプログラムを終了するより良い方法がありますか?
答え1
kill
プロセスに信号を送信します。 TERM信号はデフォルトで送信されます。 TERM信号は、プロセスによって「捕捉」され得る。つまり、信号を監視して受信時にアクションを実行できます。
ほとんどの場合、LinuxプロセスはTERM信号が送信されると正常に動作します。つまり、それ自体がクリーンアップされ、完全に終了します。開発者がこの状況を正しく処理したと仮定すると、これはkill
多くのプロセスを終了する完全に有効な方法です。
特定のプロセスで動作するかどうかは開発者によって異なります。
捕捉できないいくつかの信号(KILLなど)があります。をkill
実行してKILLを送信しますkill -9
。これは、クリーンアップする機会がないため、プロセスにより破壊的です。
答え2
kill -15 [pid/name]
プロセスがクリーンアップを実行できるようにする「正常」終了として使用されます。
「オーバーライド」終了として使用され、kill -9 [pid/name]
プロセスを即座に終了します。
答え3
ウィンドウを閉じることをシミュレートできます。しかし、ウィンドウを確実に識別する方法がわかりません。 (つまり、殺さずにFirefoxを殺すgedit firefox-bug.txt
)。説明したように、基本的なトレードオフは、ユーザーの対話(確認ダイアログボックスを閉じる)を奨励するかどうかです。