- - PR -
datediffコマンドについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-25 16:14
お疲れ様です。
ほとんどLinuxは素人なので、聞きたいことがあるのですが、 一日前のログをテキストファイルに取得したいと思っています。 datediffを使ったソースで一日前のログを取りにいくときの 書き方を教えてくれないでしょうか? よろしくお願いいたします。 また、なにかいいリンク先などでも構わないので、教えください | ||||
|
投稿日時: 2004-11-25 16:58
こんにちは。
datediffコマンドはど素人なんですが、そもそもdatediffとは? どんなディストリビューションをお使いですか? Redhat Enterprise linux ES3.0では、そういうコマンドは見たことも 使ったこともないんで。
Cの関数かなんかでしょうか? /var/log/messages のログだったら、 $ egrep "Nov 24" /var/log/messages > /tmp/logfileNov24.txt と書いてしまいますが。 書式は環境によって違うと思いますので、このままではうまくいかないかも。 | ||||
|
投稿日時: 2004-11-25 17:31
Vine Linux2.6r1にもdatediffはありませんでした。
# VBにはあるようですが、このことですか? 取得したいファイルはどのような書式でしょうか。 また、手打ちを想定したコマンドで良いのでしょうか。それとも自動実行する必要があるでしょうか。 自動実行する場合はシェルやperlのスクリプトで良いのでしょうか。それともCのバイナリとして用意する必要があるでしょうか。 この辺りがわかれば、有識者に助けてもらえると思いますよ。 | ||||
|
投稿日時: 2004-11-25 21:10
同じく「datediffってなんじゃらほい?」なんですが。
「一日前の日付」を得たい、ということだとすると... シェルスクリプトではわりとやりづらいので perl とか ruby とかを使う案でしょうね。 C で書いてもいいんですが、長くなるし。 | ||||
|
投稿日時: 2004-11-25 22:10
これでどうでしょ?
コマンドを入れた時刻の24時間前の年/月/日 時:分:秒が表示されます。 bash限定f(^^;;;; 86400 (秒)を変えると何日前、何日後、何時間後、何時間前と応用も可。 "+%Y/%m/%d %H:%M:%S"は適当に代えてファイル名の一部にするなり、grepに使うなりしてください。 #!/usr/bin/bash # 86400 = 24 hour * 60min * 60 sec # 1970/01/01 00:00:00(GMT) = 1970/01/01 09:00:00(JPN) date -d "1970/01/01 09:00:00 $((`date +%s` - 86400)) sec" "+%Y/%m/%d %H:%M:%S" [ メッセージ編集済み 編集者: ほろりん 編集日時 2004-11-26 18:44 ] | ||||
|
投稿日時: 2004-11-25 22:35
こんばんわ.
logrotate で daily で lotate してしまったらいけませんか? でも厳密に 0:00 で切るのは困難かな? |
1