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
dnsmasqでDNSサーバを立ててWindowsから参照させる

Linuxサーバ上にdnsmasqで DNSサーバ立てて、自宅内のサーバの名前解 …

no image
PS3にLinux (Fedora10)をインストールしてみる

PS3にFedora 10をインストールしてみました。環境はテレビにHDMIで接 …

no image
ディスクイメージをデバイスファイルとして扱う@CentOS5.4 + Xen

※ 2015/4/30追記 : mountオプションで直接マウントする方法を書き …

Ubuntu 14.04 LTS DesktopのWindowsキーのショートカットを無効にする

Ubuntu 14.04 使っていて、Windowsキー+1 や Windows …

no image
システム上のユーザ一覧情報の取得

NISやLDAPなどを使用していると、きちんとと設定されているのか、誰が認証でき …

no image
ソースコードを読むためのツール

CodeReadingWikiを改造してみました  →  こちら 現在多くのアプ …

no image
ブックマークのスクロール位置の記憶@Firefox3

今までFirefoxを使っていて不便に思っていたことの一つに、サイドバーのブック …

no image
コマンドラインで画像編集@Cygwin

シェルスクリプトで画像を扱いたい場合は、 ImageMagick というソフトが …

no image
ログイン画面の壁紙変更@Windows 7

C:\Windows\System32\oobe\info\background …

no image
NICのデバイス名が変わった時の対処 @ RHEL6

RHEL6のKVMイメージをコピーして、同じ環境を作ろうとしたところ、eth? …