[KONY.NET] タグ「Perl」による検索結果

[Linux]○日前の日付を取得する方法

カテゴリ:

Linuxで○日前の日付を取得する方法は、以下のとおり。

■dateコマンドの場合

・当日の1日前
date -d "1 day ago"

・指定日付の1日前
date -d "日付 1 day ago"

・指定日付の2日前
date -d "日付 2 days ago"
↑days と複数形になっていることに注意

-d は --date でもOK。

<実行例>


# date -d '1 day ago' +%Y%m%d
20060824
# date --date "1 day ago" +%Y%m%d
20060824
# date -d "20060825 1 day ago" +%Y%m%d
20060824
# date -d "20060825 2 days ago" +%Y%m%d
20060823

■Perlの場合

・現在日付の1日前

/usr/bin/perl -e '@tm = localtime(time() - 24*60*60);printf("%4d%02d%02d",(1900+$tm[5]),$tm[4]+1,$tm[3]);'

[Perl]標準出力を加工する

カテゴリ:

標準出力を加工する方法です。

例えば、vmstatは時刻が表示されないため、
vmstat -n 1の標準出力の先頭に常に時刻を
表示させてみます。

■Perl


open(FH, "vmstat -n 1 |");
while($x = ) {
        ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
        printf("%02d:%02d:%02d %s",$hour,$min,$sec,substr($x,0));
}

■gawk


#!/bin/sh
vmstat -n $* | gawk '{printf("%s %s\n", strftime("%H:%M:%S"),$0)}'

さらに、Perlの場合は、先頭に、


$|=1;

を追加して、バッファリングをOFFにすれば、
tail -f ですぐ確認できます。
バッファリングが有効だと1秒おきにvmstatを出力しても
ファイルへは1秒おきに出力されません。
この場合、tail -f などの確認がしづらくなります。

上記スクリプトを通して実行した vmstat -n 1 の出力結果は以下のとおりです。


04:40:47 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
04:40:47  r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
04:40:47  0  0      0 7926776  64156  97868    0    0    14     7  164    49  0  0 100  0
04:40:48  1  0      0 7926776  64156  97868    0    0     4     4  176    40  0  0 100  0
04:40:49  0  0      0 7926776  64156  97868    0    0     4     4  165    34  0  0 100  0

Twitter

New Comment

Tag Cloud

広告

広告

Calendar