[KONY.NET] タグ「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]);'
tar中に
「読み込んだファイルが変更されています」
というエラーが発生したときお読みください。
WindowsとLinuxを共存させる場合、
さまざまなブート方法が考えられるが、
Windowsをメインに利用しているユーザのために、
Bootpartを利用して、
Windowsブートローダ(NTLDR)からLinuxを起動する方法を紹介する。
標準出力を加工する方法です。
例えば、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
大量ファイルをコピーしたり、tarで固めたり、
削除したりするときの方法です。
例えば、ls * としたときに * で展開できる
ファイル名の長さは制限があります。(確か128バイト)
<エラー例>
# ls *
bash: /bin/ls: 引数リストが長すぎます
lsだけでなく cp * , rm * もできなくなります。
そこで xargs を利用します。
例えばOracleの監査ファイル *.aud の削除などに。
方法は以下のとおりです。
■削除
find ${ORACLE_BASE}/admin/bdump -name '*.aud' | xargs /bin/rm -f
■コピー
find ${ORACLE_BASE}/admin/bdump -name '*.aud' | xargs -i% /bin/cp -fp % /backup/
cpのようにfindの内容をコマンドの途中に挿入したい場合は、
-iで挿入文字列を指定し、指定した文字列を挿入したい場所に
記述します(上記の例だと%)。
コマンド名:yes
~man より~
yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加し、 kill されるまで繰り返して表示する。引数が一つも与えられないと、yes は `y' に改行を付加したものを kill されるまで表示しつづける。
要は、
$ yes | cp -p /hoge /piyo
などした場合、複数ファイルについて yes/no 聞かれても、
すべて y (デフォルト) を自動的に打ってくれます。
yes の後ろに文字列を指定すれば、
任意の文字列を打ち続けてくれます。
自動実行シェルを作成する際に役立ちそうですね。