Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

標準出力にタイムスタンプを付与する@Linux

   

シェルスクリプトの実行結果をファイルに保存する時など、タイムスタンプが欲しい時があります。いくつか方法はあると思いますが、ここではLinuxに標準でインストールされてるawk使って簡単に実現してみます。

$ ping 172.16.0.1 | awk '{print strftime("%F %T ") $0; fflush();}'
2017-07-02 21:34:29 PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
2017-07-02 21:34:29 64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=2.44 ms
2017-07-02 21:34:30 64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=2.01 ms
2017-07-02 21:34:31 64 bytes from 172.16.0.1: icmp_seq=3 ttl=64 time=1.95 ms
2017-07-02 21:34:32 64 bytes from 172.16.0.1: icmp_seq=4 ttl=64 time=2.09 ms

 

簡単ですね。スクリプト内で毎回awkを呼び出すのは面倒な場合は、coproc コマンドやexecを組み合わせてみましょう。

#!/bin/bash

TTY=`tty`
coproc awk '{print strftime("%F %T ") $0; fflush();}' > $TTY
exec >&${COPROC[1]} 2>&1

ping 172.16.0.1

 

coproc で awk コマンドをバックグラウンドで起動し、awkの標準出力を自分のttyにリダイレクトします。さらに、exec スクリプト内の全標準出力・標準エラー出力をcoprocで起動したawkの標準入力にリダイレクトしています。

結果、ping の出力結果が全てがawk経由で自分のターミナル上に出力されます。

 - IT技術, サーバ構築 , , , ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
gvfsを使用して、Windowsの共有フォルダを使用する@Ubuntu 9.04

今までmaznはWindowsの共有フォルダにLinuxからアクセスする時は、m …

no image
gitで過去のコミットを書き換える方法まとめ

コミットしてしまった後に恥ずかしい間違いに気づいて書き換えたい時の対処方法。 ま …

no image
qcow2のディスクイメージをマウントして編集する@Ubuntu12.04

KVMなどで使われているqcow2形式のディスクイメージは、単純なディスクイメー …

no image
日本語入力@Debian etch

以下のコマンドで今使用している日本語入力がわかる $ im-switch -l …

no image
サーバが落ちてsshが応答しない@CentOS 5

ssh でサーバにログインしていて、サーバが落ちた時に反応がなくなってイライラし …

no image
任意カラムでのsort

これもまた覚え書き。 sort コマンドは通常、テキストファイルを行単位でソート …

no image
WordPress と Twitter の連携

tweetable でWordpressとTwitterを連携させてみました。 …

no image
リモートデスクトップでウィンドウ表示と全画面表示を切り替える@Windows 7

最近はクラウドやらなんやらで、Windows 付属のリモートデスクトップ機能を使 …

no image
キーコードの表示@Debian etch

以下のコマンドでキーコードの対応表を取得できます。 # xmodmap -pke …

no image
PS3ファームウェアは3.0に!

PS3のファームウェアが着々と進化してますね。ついに3.0が2009/9/1にリ …