同時に動作し、便利な出力方法を提供する必要があるclient.sh
2つのシェルスクリプトがあります。そして、1つの端末しか使用できません。したがって、何が起こっているのかを確認するために2つを切り替える必要がありますが、停止しないでください(+)。私は何をすべきかわかりません。私が走るときserver.sh
watch
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- を押し、A次sへを押します。Sコメントを共有してください。
- Ctrl- を押しAて押してTab下の区切り線に移動します。
- Ctrl- 次に、アクティブターミナルのリストを開き、ターミナル1を選択します(ターミナル0はデフォルトでトップスプリットにリンクされます)A。"
答え2
あなたが探しているのはBashの仕事制御です。man bash
「JOB Control」を検索すると、これに関するすべての内容を読むことができます(/^JOB CONTROL
bashのマニュアルページに入力)。
それでも、command &
コマンドはバックグラウンドで実行する必要があります。 bashコマンドを使用してこれを確認できますjobs
。これにより、すべてのバックグラウンドジョブ、ジョブ番号、およびステータスが一覧表示されます。
bg n
ジョブ番号nで停止したジョブを再開するには、またはを使用します%n &
(例:bg 5はジョブ番号5を再開します)。
背景から前景にジョブを再インポートするには、 fg n
またはを使用します。%n
お役に立てば幸いです。
答え3
複数の端末を同時に実行するには、screen(1) や tmux(1) などを使用します。ログアウトして他の場所から検索することもできます。
GNOME端末などでタブを使用してください。
bash(1)でジョブ制御を使用して(情報ファイルの関連セクションを読みます)、ジョブを停止/バックグラウンド/フォアグラウンドで実行します。