シェルを終了すると、プロセスはフォアグラウンドで実行されます。

シェルを終了すると、プロセスはフォアグラウンドで実行されます。

フォアグラウンドで実行中のプロセスがあります。 Bashを終了できるかどうかを知りたいです。

  1. (もちろん)フォアグラウンドプロセスを終了せずに通常通りに終了します。
  2. ターミナルプログラムを終了する必要はありません。または、クライアント(iTerm2やPuTTYなど)を介してリモートで接続している場合は、クライアントをシャットダウンする必要はありません。

実行中のフォアグラウンドプロセスがないと、Ctrl-dまたはissueを介して簡単に転送の終わりを送信できることがわかりますexit。フォアグラウンドプロセスの実行中にこれが可能かどうか疑問に思います。

答え1

フォアグラウンドプロセスとは、サーバーの次の属性を意味し、これらの属性は端末にバインドされます。

  • ユーザーと対話します。
  • スレーブ擬似デバイスに接続されているシェル(bashなど)で使用できるように、マスター擬似デバイスにテキスト入力を提供します。
  • プライマリ擬似デバイスからテキスト出力を読み取り、それをユーザーに表示します。

だから不可能だと思います。あるいは、インストールプロセスと同様に、プロセスをデーモンとして実行し、出力を特定の端末および/またはファイルに提供します。

答え2

しかも、さらに簡単screenですが、特定の状況に応じて時々より良いです。ねえ:tmuxnohupnohupとスクリーン詳細については。

これにより、nohupプロセスはフォアグラウンドに保持されますが、プロセスと対話したり、端末で出力を表示したりすることはできません。バックグラウンドでプロセスを開始するには、&(ie)when start the processを追加しますnohup <your command here> &

プロセスがすでに実行されている場合は(プロセスの停止)を押してから、Command(停止したプロセスをバックグラウンドで送信)を押すと、nohup端末に再びアクセスできます。Ctrl+Zbg

編集する(OPのコメント後):このシナリオを理解したかどうかはわかりませんが、次のことを試すこともできます。

  1. ターミナルウィンドウを開きます(一部のシェルが内部で実行されます)
  2. そのウィンドウ内で別のシェル(bashなど)を明示的に起動します。
  3. nohup2番目のシェルでフォアグラウンドプロセスを開始します(sなどはありません)。
  4. 別の端末ウィンドウを開く
  5. 「中間」シェルを識別します(テスト中のプロセスの親になります)。
  6. 「中」シェルに終了信号を送信します。

これにより、テストされたプロセスが「セミデーモン」に変わり、最初のターミナルウィンドウで最上位シェルにアクセスできます。テストプロセスはまだ端末に接続されているため、ウィンドウを閉じると終了します。

関連情報