- PR -

datediffコマンドについて

1
投稿者投稿内容
@っ子
常連さん
会議室デビュー日: 2004/06/09
投稿数: 28
投稿日時: 2004-11-25 16:14
お疲れ様です。

ほとんどLinuxは素人なので、聞きたいことがあるのですが、
一日前のログをテキストファイルに取得したいと思っています。

datediffを使ったソースで一日前のログを取りにいくときの
書き方を教えてくれないでしょうか?

よろしくお願いいたします。
また、なにかいいリンク先などでも構わないので、教えください
めぐ
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 86
お住まい・勤務地: 千葉県内
投稿日時: 2004-11-25 16:58
こんにちは。

datediffコマンドはど素人なんですが、そもそもdatediffとは?
どんなディストリビューションをお使いですか?
Redhat Enterprise linux ES3.0では、そういうコマンドは見たことも
使ったこともないんで。

引用:

datediffを使ったソースで一日前のログを取りにいくときの
書き方を教えてくれないでしょうか?



Cの関数かなんかでしょうか?


/var/log/messages のログだったら、
$ egrep "Nov 24" /var/log/messages > /tmp/logfileNov24.txt
と書いてしまいますが。
書式は環境によって違うと思いますので、このままではうまくいかないかも。

komey
ベテラン
会議室デビュー日: 2003/11/27
投稿数: 76
投稿日時: 2004-11-25 17:31
Vine Linux2.6r1にもdatediffはありませんでした。
# VBにはあるようですが、このことですか?

取得したいファイルはどのような書式でしょうか。
また、手打ちを想定したコマンドで良いのでしょうか。それとも自動実行する必要があるでしょうか。
自動実行する場合はシェルやperlのスクリプトで良いのでしょうか。それともCのバイナリとして用意する必要があるでしょうか。

この辺りがわかれば、有識者に助けてもらえると思いますよ。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-11-25 21:10
同じく「datediffってなんじゃらほい?」なんですが。

「一日前の日付」を得たい、ということだとすると...
シェルスクリプトではわりとやりづらいので
perl とか ruby とかを使う案でしょうね。
C で書いてもいいんですが、長くなるし。
ほろりん
ベテラン
会議室デビュー日: 2004/11/24
投稿数: 98
お住まい・勤務地: あそこ
投稿日時: 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 ]
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-11-25 22:35
こんばんわ.

logrotate で daily で lotate してしまったらいけませんか?
でも厳密に 0:00 で切るのは困難かな?
1

スキルアップ/キャリアアップ(JOB@IT)