複数の対話型ジョブを停止せずに 1 つの端末で使用するにはどうすればよいですか?

複数の対話型ジョブを停止せずに 1 つの端末で使用するにはどうすればよいですか?

client.sh2つのシェルスクリプト、とがありserver.sh、これらは同時に動作して、watch-way で有用な出力を出す必要があります。そして、使用できる端末は1つだけです。したがって、何が起こっているかを確認 するには
、それらを切り替えなければなりませんが、それらを停止させる必要はありません ( Ctrl+ Z)。
どうすればいいのかわかりません。

./server.sh &

次にEnterターミナルに入力します(クライアント)ですが、

[1]+ Stopped                   ./server.sh

ターミナルでジョブを切り替えて、ジョブを停止せずに出力 (内部状態) を確認する便利な方法はありますか?

答え1

使用screen

$ screen -S my-job

これにより、「my-job」という名前の新しいセッションが開始されscreen、それに接続されます。

$ ./server.sh

server.shこれにより、セッションにアタッチされた最初の(デフォルトの)ターミナルでスクリプトが開始されますscreen。次に、Ctrl-を押しAてからCtrl- を押しますC。これにより、新しいターミナルを作成して切り替えます。これで以下を実行できます:

$ ./client.sh

出力を観察します。切り替えるには、Ctrl- を押してA、もう一度Ctrl- を押しますA

screenプログラムを実行したまま切断するには、 Ctrl-を押してAからdetch を再接続して出力を再度表示するには、次のコマンドを使用します。

$ screen -x my-job

次のようにして、接続中に両方のスクリプトの出力を一度に表示することもできます。

  • Ctrl- を押しAs視点を分割します。
  • Ctrl- を押してATab下の分割部分に移動します
  • Ctrl-Aに続いて"アクティブな端末のリストを開き、1 番目の端末を選択します (デフォルトでは 0 番目の端末が最上部の分割に接続されます)。

答え2

あなたが探しているのは、Bash のジョブ制御です。man bash「JOB CONTROL」を検索して ( /^JOB CONTROLbash のマニュアル ページに入力)、その詳細をすべて読むことができます。

ただし、command &コマンドはバックグラウンドで引き続き実行されるはずです。これは、jobsbash コマンドで確認できます。このコマンドは、すべてのバックグラウンド ジョブ、そのジョブ番号、およびステータスを一覧表示します。

bg nまたは を使用すると%n &、ジョブ番号 n の停止したジョブを再開できます (例: ジョブ番号 5 を再開するには bg 5)。

fg nまたは を使用すると%n、ジョブをバックグラウンドからフォアグラウンドに戻すことができます。

お役に立てれば。

答え3

screen(1) や tmux(1) などを使用して、複数のターミナルと同等のものを同時に実行します。ログアウトして別の場所から再度実行することもできます。

たとえば、Gnome ターミナルでタブを使用します。

bash(1) のジョブ制御を使用して (info ファイルの関連部分を必ず読んでください)、ジョブを停止/バックグラウンド/フォアグラウンドします。

関連情報