バックグラウンドプログラムの寿命

バックグラウンドプログラムの寿命

& オプションを使用してターミナルでバックグラウンド プログラムを起動した場合、ターミナルを閉じると停止しますか?

答え1

それはあなたが電話を切る端末。端末は必ずしも閉まっている

端末でエミュレータプログラム実際には何もハングアップしていませんが、エミュレータプログラムを閉じると、エミュレートされた端末ハングアップが発生します。(より厳密に言えば、擬似端末デバイスのマスター側を閉じると、スレーブ側で端末ハングアップが発生します。)すべてのエミュレータプログラムが閉じられるという概念を持っているわけではありません。オペレーティングシステムカーネルに組み込まれ、カーネルの仮想端末たとえば、「閉じる」ことはできません。

実際の端末には、キャリア検出ラインを備えたシリアル ポートがあり、リモート端末のダイヤルイン ユーザーが電話接続を切断すると、実際のモデムのハングアップが発生する可能性があります。

これはすべて、リモート端末を備えたタイムシェアリング システムの時代に遡ります。このシステムでは、ユーザーは使用料を請求されていました。誤って電話接続が切断された場合、次回のシステム再起動まで実行中のプログラムに対して料金を請求されることは、絶対に望ましくありません。逆に、システム管理者や他のユーザーは、他のダイヤルイン ユーザーに割り当てられる可能性のある、名目上は空いている端末に接続されたプログラムが実行中のままになることを望みませんでした。

それ以来、多くのことが変わりました。まず、BSDジョブ制御は、ハングアップ信号の分配方法の変更と、セッションリーダーログインセッション内のジョブを管理するサーバーであり、そのサーバーが消滅すると、そのジョブにとって大きな打撃となる。インターネット経由でのリモートログインが可能になり、GUIログインセッション端末エミュレータプログラムは非常に普及しており、人々はそれを端末と混同しています。模倣する

しかし、基本的な考え方は、通常の場合、ユーザー プロセスは、端末セッションが終了すると、セッション リーダーの仲介によるものであっても、何らかの方法で終了されるという点に変わりはありません。

答え2

訪問ターミナルからバックグラウンドでプログラムを実行するまたはプログラムをターミナルから起動して分離する最も効率的な方法は何ですか?

& オプションを使用してターミナルでバックグラウンド プログラムを起動した場合、ターミナルを閉じると停止しますか?

gnome-terminal閉じるボタンをクリックして閉じると、そのプログラムが停止/強制終了される可能性があることがわかりました。しかしターミナルを閉じるとexitコマンドを実行すると、プログラムは閉じたり停止したり強制終了したりしません。

答え3

はい、停止します。プログラムが停止しないようにするには、 を使用しますnohup

たとえばnohup firefox > /dev/null 2>&1 &、はFirefoxを終了せずにバックグラウンドで実行し、コンソールにエラー/出力が表示されないようにします。

関連情報