client.sh
2つのシェルスクリプト、とがあり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。これにより、C新しいターミナルを作成して切り替えます。これで以下を実行できます:
$ ./client.sh
出力を観察します。切り替えるには、Ctrl- を押してA、もう一度Ctrl- を押しますA。
screen
プログラムを実行したまま切断するには、 Ctrl-を押してAからdだetch を再接続して出力を再度表示するには、次のコマンドを使用します。
$ screen -x my-job
次のようにして、接続中に両方のスクリプトの出力を一度に表示することもできます。
- Ctrl- を押しAてs、ス視点を分割します。
- Ctrl- を押してA、Tab下の分割部分に移動します
- Ctrl-Aに続いて"アクティブな端末のリストを開き、1 番目の端末を選択します (デフォルトでは 0 番目の端末が最上部の分割に接続されます)。
答え2
あなたが探しているのは、Bash のジョブ制御です。man bash
「JOB CONTROL」を検索して ( /^JOB CONTROL
bash のマニュアル ページに入力)、その詳細をすべて読むことができます。
ただし、command &
コマンドはバックグラウンドで引き続き実行されるはずです。これは、jobs
bash コマンドで確認できます。このコマンドは、すべてのバックグラウンド ジョブ、そのジョブ番号、およびステータスを一覧表示します。
bg n
または を使用すると%n &
、ジョブ番号 n の停止したジョブを再開できます (例: ジョブ番号 5 を再開するには bg 5)。
fg n
または を使用すると%n
、ジョブをバックグラウンドからフォアグラウンドに戻すことができます。
お役に立てれば。
答え3
screen(1) や tmux(1) などを使用して、複数のターミナルと同等のものを同時に実行します。ログアウトして別の場所から再度実行することもできます。
たとえば、Gnome ターミナルでタブを使用します。
bash(1) のジョブ制御を使用して (info ファイルの関連部分を必ず読んでください)、ジョブを停止/バックグラウンド/フォアグラウンドします。