• ベストアンサー

linux RedHatでコンマ1秒を表示させる方法

ログに出力されるタイムスタンプはhhmmssの形式で表示されますが、 コンマ1秒を表示させることはできるのでしょうか? loggerコマンドを使ったシェルを作って、ログにシェルの実行結果を書き込むのですが、 その際のタイムスタンプは1秒未満の時刻を表示したいのです。 dateコマンドでは、1秒未満を表示させる引数の記載はありませんでした。 ●デフォルトのメッセージ出力形式 Dec 17 10:49:44 ●希望するメッセージ出力形式 Dec 17 10:49:44.999             ^^^

質問者が選んだベストアンサー

  • ベストアンサー
  • interplay
  • ベストアンサー率39% (108/273)
回答No.2

RedHatでもどのディストリビューションですか? それによって違いますよ。 ちなみにRedHatEnterpriseLinuxAS3なら以下の様に出ます。 Red Hat Enterprise Linux AS release 3 (Taroon Update 3) Kernel 2.4.21-20.ELsmp on an i686 $ date "+%b %d %R:%S.%N" 12月 24 15:07:28.303932000 でもRedHatEnterpriseLinuxAS2.1では出ません。 Red Hat Linux Advanced Server release 2.1AS/i686 (Pensacola) Linux svr21 2.4.9-e.57smp #1 SMP Thu Dec 2 20:51:12 EST 2004 i686 unknown $ date "+%b %d %R:%S.%N" 12月 24 15:10:26.%N 詳しくは調べていませんがdateの含まれるパッケージ又はコマンドから呼ばれる先のデータを引き渡すパッケージ又はその両方が物によって微妙に違う様です。

yukiasai
質問者

お礼

回答ありがとうございます。返信遅れてしまい申し訳ありません。 頂いた回答から、無事出力できました。 [root@test001 testusr]# cat date.sh date "+%b %d %R:%S.%N" [root@test001 testusr]# sh date.sh 12月 24 13:28:46.514860000 [root@test001 testusr]# この出力形式(コンマ以下の表示)を恒久化するには、 どうすればよいのかご存じでしょうか? /etc以下で”date”をgrepしたら /etc/rc.sysinitというファイルがありましたが・・

その他の回答 (2)

  • proust
  • ベストアンサー率57% (62/108)
回答No.3

質問の趣旨を確認したいのですが、 1秒未満の時刻を何のために出したいのでしょうか。 その目的によって、回答が異なります。 a)ログの種類を問わず、既存のソフトウェアが「syslogd」を介して出力するあらゆるログについて、正確な時刻(いつそのログが発生したのか)を知りたい b)ある自作のシェルが実行された時刻(いつ実行されたのか)を正確に知りたい。 c)ある自作のシェルが実行されるのに要した所要時間(実行にどれだけかかったのか)を厳密に知りたい。 a)の場合ですが、syslogの通信規約(RFC3164)で秒単位までしか送っていないので、残念ながら秒未満は出せません。 b)この用途では、dateコマンドを date "+%b %d %R:%S.%N" >> mylog.txt のように リダイレクトして自前でログを出しましょう。 c) timeコマンドを使います。 man time で調べることができます。 ※しかし、そもそもシェルでコマンドを組んでいる時点で、秒未満の時刻はあまり  あてになりません。秒未満が必要なのは何かの計測とか、CやJavaのプロファイリング などがおおいと思いますが、そのような用途ではc)を使うか、Perlとかを使用して プログラムを組んでほうがよいです。

  • proust
  • ベストアンサー率57% (62/108)
回答No.1

date "+%b %d %R:%S.%N" ではどうですか %Nは日本語のmanには出てきませんがナノ秒をあらわします. Fedora Core 2で確認済み.

yukiasai
質問者

お礼

回答ありがとうございます。返信遅れてしまい申し訳ありません。 頂いた回答から、無事出力できました。 [root@test001 testusr]# cat date.sh date "+%b %d %R:%S.%N" [root@test001 testusr]# sh date.sh 12月 24 13:28:46.514860000 [root@test001 testusr]# この出力形式(コンマ以下の表示)を恒久化するには、 どうすればよいのかご存じでしょうか? /etc以下で”date”をgrepしたら /etc/rc.sysinitというファイルがありましたが・・

関連するQ&A

  • lsコマンドで表示されるタイムスタンプの書式を統一し、秒も表示する方法

    お世話になります。 lsコマンドの使用方法で質問があります。 例えば本日(2008年11月24日) ls -al コマンドでファイルのタイムスタンプを確認すると 最終更新日時が「2008年11月23日22時41分08秒」のように6ヶ月以内のファイルは 11月23 22:41 と表示されますが、 最終更新日時が「2007年01月06日18時05分04秒」のように6ヶ月以上昔のファイルは 1月 6 2007 と表示されます。 最終更新日時がいつであっても常に 2007/01/06 18:05:04 のように固定の YYYY/MM/DD HH:MM:SS 形式(秒も出力し、ゼロサプレスも行わない形式)で表示したいのですが その方法がわからずに困っています。 (ログファイルとかで秒が表示されるとうれしいです。) 御存知の方、よろしくお願いします。

  • 【シェル】時刻の取得について

    AIX、Kシェルです。 時刻はdateコマンドで取得できますが、 秒の次のコンマ1秒を取得するにはどうすれば良いのでしょうか? 取得したい値はhhmmss??です。 宜しくお願い致します。

  • シェル(Unix) ファイル更新を監視する方法がわからなくて困っています。

    ファイルが更新されているかシェルで監視したいのですが、どのようなシェルになるのでしょうか? たとえば、 Aファイルにはフルパスで記述している複数のファイルが記述してあり、その個々のファイルのファイルサイズやタイムスタンプを採取し、 Bファイルに出力させます。 再度、Aファイルを読み込みlsコマンド等の出力結果と、Bファイルの出力結果のファイルサイズやタイムスタンプを見比べて、相違があると メッセージを出力させます。 このような動作のシェルはどのように作るのでしょうか。

  • シェルスクリプトの時刻比較について(Linux)

    1時間毎に、コマンドで得た値を加工して下記のような文字列を得ます。 10 Dec 13:59:26 10 Dec 13:59:27 10 Dec 13:59:27 10 Dec 13:59:27 最終的には、これらの時刻が1秒以内の誤差であれば無視、1秒を超える場合はエラ ーログ出力するスクリプトを作りたいのですが、時刻を比較するところでつまづいてい ます。 Red Hat Linux標準環境下という条件で、上記ログのような日時を比較する方法を 教えてください。

  • FTPコマンドでサーバのファイルをget後変更する

    BATファイルで、FTPコマンドを実行するコーティングで、サーバのファイルをgetした後でファイル名を ファイル名_hhmmss (hhmmss:タイムスタンプ 時:分:秒)に変更するには、どのようなコーティングをすればいいのか教えてください。よろしくお願いします。

  • AIX6でファイルのタイムスタンプの秒を表示するコ

    linuxでは以下のコマンドで確認できました。 ls --full-time または ls -l --time-style=”+%Y/%m/%d %H:%M:%S” AIX6で同様のコマンドを実行してもエラーになります。 ls以外でもかまわないので、 ファイルのタイムスタンプを秒まで表示する方法がありましたら、 教えてください。

  • MS-DOSでの日付表示

    MS-DOSコマンドで、日付や時刻の%date% %time%ですと、 yyyy/mm/dd hh:mm:ssの表示になります。 バッチファイルを作成して、フォルダ名の頭に日付時刻をつけたいんですが、 yyyymmdd hhmmss の表示形式にする方法が分かりません。 よろしかったら教えて頂けませんでしょうか。

  • 過去1週間のログだけをコピー

    お世話になっています。 週に一度、ログのチェックをしたいと思っていて、過去一週間の間に更新されたログファイルだけを別のディレクトリにコピーするシェルを作ろうと思っていますが、やり方が分かりません。 基本的にはcpコマンドを使用してコピーしようと思っていますが、このようにタイムスタンプによってふるいをかけるようなコピーの方法はあるでしょうか。ls -lの出力をsedなどを使って分解するしかないでしょうか。 よろしくお願いいたします。

  • Cygwinでログをのこす方法

    Cygwinをつかって、シェルを作成しました。 ログを残そうとおもい、シェルの中に script logfile.log と記述したのですが、 「コマンドがない」 というメッセージがでて実行できませんでした、 Ctgwinでログを残すコマンドとか、方法わかるかたいたらご教授ください。よろしくお願いします

  • UNIX系のコマンドで2つの時刻の差分(秒)を求めるには?

    UNIX系のコマンドで、2つの時刻の間が何秒かを求めたいのですが、どうすればいいでしょうか? 時刻の表記は任意です。 具体的な状況としては、 1.ある時刻にファイルにその時刻を出力する。 2.その数時間後に、1.で作ったファイルの時刻を読み取って、今の時刻との差分を求める。 というものです。1.のファイル作成も2.の操作も自分でやるので、1.での時刻の出力形式は自由に選べます。 UNIXで現在の時刻を1900年?から数えた秒数で出力できたら一発なんですが、そのような形式で出力ってできるのでしょうか? また、それができない場合、どうすればいいか教えていただけると助かります。 OSはsolarisのBシェルを使います。 以上、よろしくお願いします。