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
screenコマンド覚え書き@Linux

ssh接続が切れても作業環境を保てたり、複数画面を切り替えられたり、画面上の文字 …

no image
vardiaの地上デジタルが不安定なときは@RD-S601

東芝のVardiaでは、地上デジタルの電波が強すぎて、逆に画面が不安定になること …

no image
スイッチの初期化 @ Cisco Catalyst 2960

スイッチのパスワードを忘れてしまいログインできなくなった場合は初期化することにな …

no image
Windowsでの自動起動ソフトウェアを制御する@Windows XP

Windowsの起動時に自動で起動するソフトウェアは、全てのプログラムのスタート …

no image
シェルで標準出力と標準エラーをそれぞれ違う異なるコマンドにパイプで渡す@bash

あるコマンドの標準出力と標準エラー出力をそれぞれ別々のコマンドで処理するには、以 …

no image
sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmo …

no image
vimで改行に置換

viで改行を置換(削除)するには、 :%s/\\n//g とすればよいですが、改 …

no image
b-mobileのプロキシ

b-mobileのプロキシって三つあるんですね。 marion 低圧縮 mari …

no image
POP3 + Maildir形式@Debian Etch

メールの保存形式をmboxからMaildirに変更したところ、qpopperがM …

no image
リモートデスクトップでPC再起動 or シャットダウン@Windows 7

Windows リモートデスクトップ接続では、通常のスタートメニューから再起動や …