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
インストールしているFirefox3の拡張機能

Firefox3に追加している拡張機能一覧のメモです。 (Extension L …

no image
pythonスクリプトをダブルクリックで起動する→拡張子関連づけ詳細設定@Windows 7 with python 2.7

拡張子 .py を持ったファイルをダブルクリックで起動する方法です。 ※Wind …

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

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

no image
キーボードレイアウト、ロケール変更@Ubuntu 14.04 server on VMware Player

VMwareの簡易インストールはOSのインストールが簡単で便利ですが、日本時間に …

no image
日本語入力のON/OFFのキーを変更する@Fedora 17

Fedora 17 のデフォルトの日本語入力切り替えのキーは、Ctrl + Sp …

no image
viで制御コードの入力

.vimrcといった設定ファイルを書いていると、制御コードを入力したいときがあり …

no image
ログアウトしてもプロセスを止めないようにする@bash

bash上で何かプログラムを走らせている時に、ログアウトしてもプロセスを動かし続 …

no image
GRUBのコマンドラインで、手動でLinuxを起動する@CentOS 5.4

前回の記事で、USBのハードディスクにLinuxを入れたまではいいが、Windo …

no image
Samsung KiesでService Initiali Failed エラー@Windows 7 64bit

Galaxy S管理用のソフト、SamsungのKiesをインストールすると、W …

no image
無変換キーをWindowsキーに変更する@Fedora 17

日本語キーボードには、無変換キーがあるが、Linux では使う機会がないので、W …