シェルでいくつかのタスクを実行したい。シェル:バックグラウンドで実行中のファイルの末尾を作る方法
- 尾新しいファイルにファイル:他のタスクを実行すると同時に、
tail -f debug|tee -a test.log
- 、:例えば。
私の質問は:コマンドをtail -f debug|tee -a test.log
のバックグラウンドで実行すると、シェルスクリプトで他のタスクを実行できるようになりますか?
シェルでいくつかのタスクを実行したい。シェル:バックグラウンドで実行中のファイルの末尾を作る方法
tail -f debug|tee -a test.log
私の質問は:コマンドをtail -f debug|tee -a test.log
のバックグラウンドで実行すると、シェルスクリプトで他のタスクを実行できるようになりますか?
あなただけのシェルの組み込み追記演算子を使用し、すべてで、このためのTシャツを必要としない:シェルで通常どおり
tail -f debug >> test.log &
末尾&作品。あなたは出力をファイルに送るだけでなく、標準出力も必要になります。バックグラウンドであれば、おそらくあなたが望むものではありません。
通常、何かをバックグラウンドにする場合は、コマンドの後ろにアンパサンドを使用するだけです。
tail -f debug|tee -a test.log &
次に、fg
と入力してフォアグラウンドに戻すことができます。これはあなたの質問に答えましたか、あなたが求めていたことを逃しましたか?
Jason、あなたの応答に感謝します。私は試してみる:-) – zhaojing
これを行う簡単な方法は次のとおりです。
screen -R -D
tail -f debug|tee -a test.log
Ctrl-A c
ps ax |grep tail
Ctrl-A [Backspace]
...
Ctrl-A [Spacebar]
screen
を使用すると、1つの端末の接続で複数の端末セッションを実行できます。 Ctrl-A [Backspace] | [Space]で前後に切り替えます。別の別のシェルを作成するにはCtrl-A c
画面の大きな利点は、端末セッションが切断されるとすべての実行を維持することです。ターミナルウィンドウを閉じるか、sshを切断して別のコンピュータに移動し、ログインしてscreen -R -D
を実行して、まだ実行中のものすべてに再接続してください。
あなたはたまにしかこれが必要な場合は、単に実行尾、タイプはCtrl-Zは、その後、fg %1
はフォアグラウンドに戻す尾のプロセスをもたらすために、またはbg %1
は、それが永続的にバックグラウンドで実行するために、コマンドを実行します。 Ctrl-Zを使用すると、jobs
コマンドは、すべての分離ジョブを表示します。
通常、2番目のウィンドウ/端末を使用するのが最も簡単です。ログ出力が画面にも表示されている間にコマンドを入力することは、私の経験上、不満足な体験です。 –
@Jonathan Leffler、あなたの助言に感謝します。はい、私はそれが同じ画面でログ出力中にコマンドを入力するのは本当にイライラの経験だと思います。 – zhaojing