- PR -

メッセージを画面とlogにを同時に

投稿者投稿内容
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-24 13:36
こんにちは。
引用:
スクリプト内で一時ファイルを作成して、logに落としながらすぐさま
tail -fが一番と思いつきました。


…それって、tail コマンドをバックグラウンド起動して、主処理と並行動作させるってことでしょうか?
tail -f はエンドレスなので、最後に手動で停止させる必要が出てきますが、その処理が面倒そうな気がします。
引用:
結局teeを使うも
コマンド|tee -a log.log
で画面出力とlog作成するものの
このあとecho $?でコマンド返り値を知りたかったのですが
この場合「tee」の返り値になってしまうと言う結果に陥りました。


それは避けられますよ…。

※最終的には、何を使うかは好みが出るでしょうけど、何を使ってもそれなりの手はあるものです。
noku
常連さん
会議室デビュー日: 2005/07/21
投稿数: 20
投稿日時: 2005-10-24 13:57
angelさん
何度もアドバイスありがとうございます。

そうですか。
まだ試してないですがtail -fは手間かかりそうですね。

確かに結果をだすには幾通りも手がありますが
なるべくキレイで効率のよいソースを書きたかったので。
皆さんから助言をいただきました。

まだまだ試行錯誤してみます。
ありがとうございました。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-24 14:59
補足です。
引用:

引用:
スクリプト内で一時ファイルを作成して、logに落としながらすぐさま
tail -fが一番と思いつきました。


…それって、tail コマンドをバックグラウンド起動して、主処理と並行動作させるってことでしょうか?
tail -f はエンドレスなので、最後に手動で停止させる必要が出てきますが、その処理が面倒そうな気がします。


これは、kill $! を使えば割と楽かも知れないですね。有害なcshプログラミングの「5. 変数の文法」を見て思いました。
…非同期処理ですので、kill する時に tail が全部出力し終わっているかどうか、保証はできないですけど。

引用:

引用:

結局teeを使うも
コマンド|tee -a log.log
で画面出力とlog作成するものの
このあとecho $?でコマンド返り値を知りたかったのですが
この場合「tee」の返り値になってしまうと言う結果に陥りました。


それは避けられますよ…。


同じ「有害なcshプログラミング」の「1d. さらに込み入った組み合わせ」に解決策の一つが出ています。
これはこれで面白いですが、非常用という感じもしますね。
※今回の場合、そんなことをしなくても済む例は、既に出しましたし。

以上、ご参考まで。

スキルアップ/キャリアアップ(JOB@IT)