一般に、この方法でこれを行うには問題ありません。
「X」をクリックしてターミナルウィンドウを閉じると、デスクトップ(GNOME、KDEなど)からターミナルアプリケーションに「シグナル」が送信され、シャットダウンするよう指示されます。このシェルでMATLABを実行しているため、ターミナルアプリケーションの子プロセスと見なされます。
そのため、親プロセスになる責任の一部は、この同じ「信号」を子供に順番に送信することです。
さて、私が今説明したことを概念的に理解したら、実際の用語をもう少し使いましょう。
信号
最初に「シグナル」を使用すると、実際にはUnixプロセスに送信できるさまざまなシグナルのファミリーがあります。それをシンプルに保つために4あなたが頻繁に表示されますことを、そこにあるSIGHUP
、SIGTERM
、SIGINT
、とSIGKILL
。
シグアップ
SIGHUPシグナルは、制御端末が閉じられたときにプロセスに送信されます。もともとは、シリアル回線のドロップをプロセスに通知するために設計されました。現代のシステムでは、この信号は通常、擬似または仮想端末の制御が閉じられたことを意味します。
SIGTERM
SIGTERMシグナルは、プログラムを終了させるために使用される一般的なシグナルです。SIGKILLとは異なり、この信号はブロック、処理、および無視できます。これは、プログラムに終了を丁寧に依頼する通常の方法です。
SIGINT
ユーザーがINTR文字(通常はCc)を入力すると、SIGINT(「プログラム割り込み」)シグナルが送信されます。
SIGKILL
SIGKILLシグナルは、プログラムを即座に終了させるために使用されます。これは処理または無視できないため、常に致命的です。この信号をブロックすることもできません。
注: SIGINT
実行中にCtrl+ Cを使用してコマンドラインからプログラムを「中断」すると送信されます。
どれが使われていますか?
最も可能性が高いのSIGTERM
は、ウィンドウ環境によって呼び出され、端末に渡されることです。その場合、端末はおそらくSIGHUP
MATLABに送信されます。このシグナルは、すべてのプロセスにローカルクリーンアップ(ファイルのクローズ、プロセスの終了など)を実行する機会を与えます。
キルコマンド
よくない名前のコマンドを使用して、自分で信号を送信できますkill
。したがってSIGTERM
、端末またはSIGHUP to MATLAB, you could determine their PID using
ps`に信号を送信してから、次のコマンドを実行して信号を送信します。
$ kill -SIGTERM <PID>
またはこれ:
$ kill -SIGHUP <PID>
次のコマンドを使用して、信号の完全なリストを取得できます。
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
信号に数字があることに注意してください?多くの場合、名前の代わりにそのように使用されるのを見るでしょう:
$ kill -15 <PID>
または悪名高い-9
、ほとんどすべてのプロセスを殺すことができます。