1つの端末を使用して複数の対話型タスクを停止せずに処理する方法は?

1つの端末を使用して複数の対話型タスクを停止せずに処理する方法は?

同時に動作し、便利な出力方法を提供する必要があるclient.sh2つのシェルスクリプトがあります。そして、1つの端末しか使用できません。したがって、何が起こっているのかを確認するために2つを切り替える必要がありますが、停止しないでください(+)。私は何をすべきかわかりません。私が走るときserver.shwatch
CtrlZ

./server.sh &

その後、端末に入力してくださいEnter(開始前)クライアント.sh)しかしそれを示しています

[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もう一度押します。CtrlA

screenプログラムの実行中に切断するには - を押しCtrlてからAdDエッチング。再接続して出力を再表示するには、次のようにします。

$ screen -x my-job

次の手順を実行して、追加スクリプトの出力を同時に表示することもできます。

  • Ctrl- を押し、Asへを押します。Sコメントを共有してください。
  • Ctrl- を押しAて押してTab下の区切り線に移動します。
  • Ctrl- 次に、アクティブターミナルのリストを開き、ターミナル1を選択します(ターミナル0はデフォルトでトップスプリットにリンクされます)A"

答え2

あなたが探しているのはBashの仕事制御です。man bash「JOB Control」を検索すると、これに関するすべての内容を読むことができます(/^JOB CONTROLbashのマニュアルページに入力)。

それでも、command &コマンドはバックグラウンドで実行する必要があります。 bashコマンドを使用してこれを確認できますjobs。これにより、すべてのバックグラウンドジョブ、ジョブ番号、およびステータスが一覧表示されます。

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

背景から前景にジョブを再インポートするには、 fg nまたはを使用します。%n

お役に立てば幸いです。

答え3

複数の端末を同時に実行するには、screen(1) や tmux(1) などを使用します。ログアウトして他の場所から検索することもできます。

GNOME端末などでタブを使用してください。

bash(1)でジョブ制御を使用して(情報ファイルの関連セクションを読みます)、ジョブを停止/バックグラウンド/フォアグラウンドで実行します。

関連情報