アプリケーションを正しく終了せずにターミナルウィンドウを閉じるのは有害ですか?

アプリケーションを正しく終了せずにターミナルウィンドウを閉じるのは有害ですか?

Ubuntu 12.04 LTSを使用するとき、私の質問は、ターミナルウィンドウでアプリケーションを起動したときに、まずアプリケーションを正しくシャットダウンせずにターミナルウィンドウを閉じるのに問題がありますか?たとえば、私はMATLABを使用します。端末を開いて入力します

matlab -nodisplay -nodesktop -nosplash

次に、複数のスクリプトを実行します。だから私はできます

exit

MATLABを終了してからターミナルウィンドウを閉じるか、ターミナルウィンドウのみを閉じます。これら2つの方法の違いは正確に何ですか?第二のアプローチが「害を及ぼす」ことはありますか?最初の方法が優先されますか?なぜ?

答え1

一般的に言えば、この程度は大丈夫でしょう。

「X」をクリックしてターミナルウィンドウを閉じると、デスクトップ(GNOME、KDEなど)はターミナルアプリケーションに「シグナル」を送信してそれ自身を閉じるように指示します。このシェルでMATLABを実行しているので、ターミナルアプリケーションの子プロセスと見なされます。

したがって、親プロセスとしての責任の1つは、同じ終了「シグナル」を子プロセスに送信することです。

今説明した内容を概念的に理解したら、もっと実用的な用語に置き換えてみましょう。

シグナル

最初は実際に「信号」です。一連のさまざまな信号Unixプロセスに送信できます。簡単に説明するためによく見られる4つ、、、SIGHUPおよびSIGTERMSIGINTありますSIGKILL

  • ため息をつく

    SIGHUP信号は、制御端末が閉じられるとプロセスに送られる。もともとは、シリアル回線損失プロセスを通知するように設計されていました。最新のシステムでは、この信号は通常、制御医または仮想端末が閉じていることを意味します。

  • 信号用語

    SIGTERM 信号は、プログラムを終了するために使用される汎用信号です。 SIGKILLとは異なり、この信号はブロック、処理、および無視できます。これは、プログラムの終了を丁寧に要求する一般的な方法です。

  • 知能を知らせる

    ユーザーがINTR文字(通常Cc)を入力すると、SIGINT(「プログラム割り込み」)信号が送信されます。

  • 信号を殺す

    SIGKILL信号はプログラムを即座に終了させるために使用されます。処理または無視できないため、常に致命的です。信号を遮断することもできません。

メモ: SIGINTこれは、プログラムの実行中にコマンドラインでプログラムを「中断」するために+を使用したCtrlときに送信されることです。C

どちらが使われていますか?

ほとんどの場合、SIGTERMウィンドウ環境で呼び出され、端末に渡されます。端末がMATLABに送信される可能性が高いですSIGHUP。この信号は、すべてのプロセスにローカルクリーンアップ(ファイルを閉じる、プロセスを終了するなど)を自分で実行する機会を提供します。

kill コマンド

間違った名前のコマンドを使用して信号を直接送信できますkill。したがって、SIGTERM端末またはSIGHUP to MATLAB, you could determine their PID usingps`に信号を送信するには、次のコマンドを実行して信号を送信します。

$ 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ほぼすべてのプロセスを終了できます。

答え2

この方法は問題ありませんが、どのアプリを開くかによってデータが失われる可能性があります。たとえば、ファイルエディタが開いていると正しく保存して終了しないと、一部の変更が失われる可能性があります。気になる場合は、ターミナルで正しくログアウト/終了してください。タイピングが好きではないか、単に試してみexitてください。logoutCtrl-D

関連情報