問題タブ [tee]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - bashはwc -l番号を取得して1つのコマンドで表示しますか?
これは明らかだと確信していますが、現在これを行っています:
これにより、必要な数が得られますが、画面には何も表示されません (とにかくエラー行を片付けます)。
1 つのコマンドで出力をコンソールに表示しながら、これを行う方法 (wc -l カウントをカウント変数に取得する) はありますか? ここで次のようなものが使用できると確信してtee
いますが、私の脳は本来のように機能していません。
それ以外の場合は、一時ファイルに書き込んでコンソールに書き込んtee
でcat
戻すwc
とうまくいくと思いますが、これを行うにはもっとエレガントな方法があるはずだと確信しています。
編集: 申し訳ありませんが、質問が不明確だったようです。カウントを画面に表示したくありません。カウントした出力、つまり、find からの出力を表示したいのです。
python - ティースキームを使用して子プロセスが終了するまで Python プロセスがハングする
プロセスの同期に関連する次の問題があります。
Python スクリプト startup.py、実行可能なマエストロ、および実行可能なティーがあります。私のpythonスクリプトstartup.pyはmaestroプログラムを開始し、teeを使用してmaestroのstderr/stdoutをログファイルにパイプし、コンソールに書き込みます。
次のコードを使用してこれを達成しました。
私のマエストロ プログラムは、マエストロ プログラムを終了するときの gui プログラムです。内部的に posix system("maestro_cleanup &") api を呼び出し、すぐに終了します。バックグラウンドで maestro_cleanup を実行しているにもかかわらず、maestro_cleanup プログラムが終了するまで maestro プログラムがコンソールを解放しないことに気付きました。時間がかかるため、バックグラウンドで maestro_cleanup を実行する必要があり、maestro_cleanup が完了するまでコンソールを保持したくありません。上記のコードを使用すると、maestro_cleanup が終了するまで maestro プログラムは終了しません。
「ps -elf」は次のように表示されます。
バックグラウンドでシステム API を使用して maestro_cleanup を開始したため、maestro_cleanup 親プロセスが maestro ではなくセッション プロセス ID であることがわかります。
maestro_cleanup が終了するまで maestro が終了しない理由は何ですか?
どんな助けでも大歓迎です。
-ビピン
shell - シェル スクリプトで出力をリダイレクトする tee コマンドを使用すると、出力がバッファされる場合とバッファされない場合があります
シェル スクリプトを 2 つのコマンドに簡略化しました。
ターミナル A (STDIN を名前付きパイプにリダイレクト):
ターミナル B (上で使用したパイプから読み取る):
私が理解していない結果:
- 結果 1 :開始ティー、開始テール: 最初のターミナルへのすべての入力はバッファーに入れられ、ティー コマンドが停止された後 (ctrl-c) にのみ 2 番目に表示されます。
- 結果 2 :ティーを開始し、テールを開始し、ティーを停止し、再びティーを開始します: 各行のみがバッファリングされます (必要な結果)。結果は、ターミナル 1 への入力の各行の最後にあるターミナル 2 に表示されます。
- 結果 3 (価値があるため):最初にテールを開始し、次にティー: #1 と同じ結果。
また、exec コマンドと cat コマンドを使用して同様のスクリプトを作成しましたが、同じ動作を示します。
python - itertools.tee() スレッドセーフ (Python) の結果です
次の Python コードがあるとします。
問題は、あるスレッドで "a" を反復し、同時に別のスレッドで "b" を反復し始めた場合に問題が発生するかどうかです。明らかに、a と b はいくつかのデータを共有しています (元の iterable、+ 追加のもの、内部バッファーなど)。では、a.next() と b.next() は、この共有データにアクセスするときに適切なロックを行うでしょうか?
unix - tee(または同等のもの)を使用しますが、最大ファイルサイズを制限するか、新しいファイルにローテーションします
UNIXプロセスからの出力をキャプチャしたいのですが、最大ファイルサイズを制限するか、新しいファイルにローテーションします。
ログローテーションを見たことがありますが、リアルタイムでは機能しません。私が理解しているように、それは並行して実行される「クリーンアップ」ジョブです。
正しい解決策は何ですか?私はそれを行うための小さなスクリプトを書くと思いますが、既存のテキストツールを使った簡単な方法があることを望んでいました。
想像:
p>与えるだろう...常に最新のログファイルを次のように書き込みます:log / my_program_log
次に、いっぱいになると... log / my_program_log000001に名前が変更され、新しいlog/my_program_logが開始されます。
c - stderr と stout の両方を複数の場所にリダイレクトするにはどうすればよいですか?
bash スクリプト (freebsd6) でコマンドを実行する必要があり、コマンドの stderr と stdout の両方をコンソール、ログ ファイル、および bash 変数に送信する必要があります。
したがって、リダイレクトなしで、私が望むのは次のとおりです。
これをそのまま実行すると、stderr だけがコンソールに出力され、stdout だけが output.log ファイルと $result 変数の両方に出力されます。その理由は理解できますが、さまざまなリダイレクトを何度も試みた結果、両方のストリームを 3 つの場所すべてに送信できませんでした。
stderr と stdout の両方を 3 つの場所すべてに送信するにはどうすればよいですか?
bash - `for`ループで`tee`を使用してパイプする
これはおそらく初心者の脱出の問題です。このようなforループでコマンドを実行しようとしています
しかし、私sorter.log
は空になってしまいます。(出力があると確信しています。)パイプ記号(\|
)をエスケープすると、まったく出力されなくsorter.log
なります。
私は何が間違っているのですか?
編集:おっと、/ media / mybook /がスリープ状態になったため、実際には出力がありませんでした。そもそもコードは正しかった。コメントをありがとうございました。
bash - コマンド出力をティーに配管するだけでなく、コマンドの終了コードを保存する
コマンドをラップするシェルスクリプト(mvn clean install)があり、出力をログファイルにリダイレクトします。
エラーで失敗した場合mvn clean install
は、ラッパーシェルスクリプトもそのエラーで失敗するようにします。ただし、すべての出力をteeにパイプしているため、の戻りコードにアクセスできませんmvn clean install
。したがって、$?
後でアクセスすると、常に0になります(teeが成功するため)。
コマンドにエラー出力を別のファイルに書き込んで後で確認しようとしましたが、mvnのエラー出力は常に空です(stdoutにのみ書き込むようです)。
mvn clean install
のリターンコードを保持しながら、出力をログファイルにパイプするにはどうすればよいですか?
bash - bash スクリプトでの tee の使用 (Solaris の場合)
一緒にハッキングした実行中のスクリプトと一緒に単純なログ ファイルを作成しようとしています。問題の行は次のようになります。
次に、これら2つは次のように使用されます。
>>
残念ながら、これが行っている唯一のことは、私の CWD で文字通り名前が付けられた空のフィールドを作成することです。このスクリプトを実行bash -x
すると、追加演算子が一重引用符で囲まれたリダイレクトが表示されますが、それが文字通り起こっているのか、それとも対話型デバッグ モードで bash によって追加されているだけなのかはわかりません。
bash - stdoutからfile1、stderrからfile2、両方ともstdoutとfileに正しくインターリーブされています
サードパーティのプログラムを考えると、同時にどのようになりますか?
- stdoutをz.stdoutに書き込みます
- stderrをz.stderrに書き込みます
- 終了コードを適切に渡す
- 両方を正しいインターリーブされた順序でstdoutに書き込みます
これが私が使用しているテストプログラム(delayed_interleaved_stdout_stderr.pl)です:
これまでのところ、私は次の方法で1,2,3を実行できました。
lhunathと友人による関連する回答のおかげで、私はそれを次のように簡略化しました。
しかし、正しいインターリーブ順序を取得できませんでした。stderrはすぐに印刷し、(おそらくバッファリングされた)stdoutは最後にすべての印刷を行います。
delayd_interleaved_stdout_stderr.plを単独で実行すると、適切な0〜9の順序で表示されます。stdoutを強制的にフラッシュすることは適切に機能しますが(コメント付きのfixmeセクションを参照)、実際のファイルを変更することはできません。
たぶん私は何か基本的なものが欠けていて、これがまったく可能かどうか疑問に思い始めています:(