shell programming

算術展開

どうも忘れがち。$((式)) a=`date +%y`; Y=$(($a%10)) $Yには年の下一桁が入る。似ているものとして、forでよく使う $(seq 1 10)だが、この括弧はバッククォートに相当するといえるかもしれない。

webサーバのメモリリークを調べようとしてコマンド打った(2007/9/26修正)

$ ps axu | awk '$11 ~ /httpd/ {print $6, $2}' | sort -n | tail カラムの並びはRedhat系のOSのpsコマンドの仕様に依存してる。もしpsコマンドの仕様が異なる環境でカラムの順番が違うことがあったら、、、(カラム名も違うだろうけど)、、 ps axu | awk ' …

bad blockスキャン@Linux

df | awk '$1 = /^[/]dev[/]/ {print $1}' | \ while read i do echo $i dumpe2fs -b $i badblocks -sv $i done

誰がメモリを食ってるか(2007/09/26修正)

ps axu | awk ' { memsize[$11] += $6; count[$11] += 1; } \ END { for (cmdline in memsize) \ print name, memsize[cmdline], "MB ", count[cmdline], "processes" }' | sort -n --key=2 ところで、自分がもっともよく使うawkのスクリプトはこれだな du .…

を使ってsyslogからヒストグラムデータを作る

1時間ごとの件数を計数するとき awk '$5 ~ /サービス名/' ログ | awk '{print $3}' | awk -F: '{print $1 }' | sort | uniq -c あ、どっちかというと uniq -c をよく忘れてしまう俺だった。ログが圧縮してあった場合には、 for i in $(seq 9 -1 0) do ; gzi…