2012/05/10

linuxのディストリビューションを調べる

cat /etc/issue | head -n 1

webサーバー運用系コマンド


#1 ディスク使用量を見る コマンド:df
df -a -h
Filesystem Size Used Avail Capacity Mounted on
/dev/da0s1a 1008M 74M 853M 8% /
/dev/da0s1h 24G 16G 5.5G 75% /home
/dev/da0s1f 1008M 4.5M 923M 0% /tmp
/dev/da0s1g 4.9G 3.7G 864M 81% /usr
/dev/da0s1e 1008M 216M 711M 23% /var
procfs 4.0K 4.0K 0B 100% /proc
#2ファイル/DIR検索 コマンド:find
・ファイルサイズ100MB以上のでかいファイルを探す
find /usr/ -type f -size +100000k -ls | sort -n | tail -5
#tail -5で大きい順に5件表示
#3 ディレクトリの使用サイズを調べる コマンド:du
# du -h /usr/local/apache2/logs/
ディレクトリの総容量
# du -h -s dir_name
512K dir_name ←総容量のみ表示される
・サブディレクトリ毎の容量
# du -h dir_name
12K dir_name/aaa
4K dir_name/bbb
54K dir_name/ccc
16K dir_name/ddd
178K dir_name/eee
40K dir_name/fff
56K dir_name/ggg
162K dir_name/hhh
512K dir_name ←最終行で総容量が表示される
・使用量の多いDIRワースト10表示
du -h | sort -n | tail | sort -r

/usr/bin/env について


shcshperlruby などのスクリプトでは、先頭行(「!#」で始まる行)でスクリプトインタープリタへのパスを宣言しています。 このパスがちゃんと通っていればスクリプトが動く。
 →「#!」のことを「シェバング」(shebang) と呼ぶ。また、この行全体を「シェバング行」と呼ぶ。
先日Apache再起動した際、Hiki(ruby)が500エラーで起動しないことがあって、Apacheエラーログを調べたら hiki.cgiアクセスした際「Rubyがみつからないょ」的なエラーメッセージが残ってた。
hiki.cgiを開いてみると、シェバング行で以下のように記述されていた。
#!/usr/bin/env ruby
・・・なんだこのパス指定は。
始めてみる指定なので「/usr/bin/env」でぐぐったら、結構ヒット。
感覚的に批判のページのほうが多いかな?
ワシもこの指定でのメリットが感じられないので、従来どおりのパス指定で完了。
#!/usr/local/bin/ruby

pearコマンドでのプロキシ指定


pearコマンドでのプロキシ指定
2008.07.10 Thursday
pear config-set http_proxy proxyhost:8080

コマンド・プロンプト 再帰的処理


dirコマンド
  • option-
#指定された属性のファイルを表示します。 [/A:属性]
#フォルダを再帰的にすべて検索して表示する [/s]
#フルパス名のみ表示 [/b]
ex)dir /s *.cnf /b > file.bat
  • ファイルを検索し、ファイルパス一覧をバッチファイルへ書き出す
ex)dir /A:D /s *.svn /b
rd(rmdir)コマンド- フォルダ削除
  • option-
#フォルダを再帰的に削除 [/s]
#/S を指定して確認のメッセージを表示しません。(QUIET モード) [/Q]
delコマンド- ファイル削除
  • option-
#ファイルを再帰的に削除 [/s]
#ワイルドカードを指定して確認のメッセージを表示しません。(QUIET モード) [/Q]
ex)ファイル削除は、ワイルドカード(*)指定でDIR配下も検索して該当するファイルを削除してくれるけど、DIR削除は一度に1つのDIRしか削除できない。
上記dirコマンドでDIR一覧を検索してバッチファイルに書き出し、エディタで編集してどーんとバッチを走らせると楽。
rd /S/Q "C:\Documents and Settings\hoge\aaa_tmp"
rd /S/Q "C:\Documents and Settings\hoge\bbb_tmp"
rd /S/Q "C:\Documents and Settings\hoge\ccc_tmp"
※ファイルパスは、「”」ダブルクォートでくくったほうがいいです。
winは日本語DIR/ファイル名とかあるので。

CPAN モジュールを追加する


Perl小数点以下の数値の丸めこみをしようとしたら、PHPのround()のような関数が無いらしく…( ̄ω ̄)CPANのMath::Roundを使えば、同じことができるらしいのでインストールする。
とりあえずCPANモジュール検索で「Math::Round」を検索してGET。(Math-Round-0.06.tar.gz)
[winの場合]

2010-12-07



解凍したDIR内に「Round.pm」があるので、それをperlモジュールDIR(ワシのlocalだとC:\Perl\lib\)に入れるか、任意のDIR作成し、そこに入れたら、プログラム内でパスを通してやるかのどっちかでOK。
説明
sample.cgi
lib/
↑libディレクトリを作ってやって、そこに放り込む。
sample.cgiの中身はこんな感じ↓。
#!perl
use lib ("./","./lib");
use Round qw/nearest/;
[Linuxの場合]
tar.gzを鯖の適当な場所へUPして、解凍したら、解凍したDIRへ移動する。
インストール作業は解凍DIR内で行う。
READMEがあれば、読む。たいていインストール方法が書いてある。
Round.pmの場合はこんな感じで書いてあった↓
How to Install
==============
make
make test
make install
まったく、その通りにやれば勝手にpathの通ってる場所へインストールしてくれる。楽ちん。

.tar.gz 圧縮・解凍


# 圧縮
tar czvf package.tar.gz package-dir
解凍(元のパッケージ・ファイルを残す)
tar xzvf package.tar.gz
# .tar.gzファイルの中身を解凍せずに確認 コマンド:tar tzvf (.tar.gzファイル名)
tar tzvf 2006.tar.gz | head
#| head で、アーカイブ先頭から10行分だけ表示。

ログファイルを 検索して圧縮するsh

#!/bin/sh
LOGS=`ls .| grep -E "*.log$"`
for f in $LOGS
do
gzip $f
echo " -- END gzip! $f -- " #DEBUG
done

dateコマンドとunixtime


日付 から unixtime への変換方法
$ date +%s
1108218628
特定の日付を変換したいときは、'--date' オプションを利用する。
$ date +%s --date "2005-01-01 00:00"
1104505200
unixtime から 日付 への変換方法
awk使用。
$ echo 1104505200 | awk '{print strftime("%c",$1)}'
Sat Jan 1 00:00:00 2005
フォーマット
$ echo 1104505200 | awk '{print strftime("%Y-%m-%d %H:%M:%S",$1)}'
2005-01-01 00:00:00
参考)

↓こんなのもあった
date -d "@$(date +%s)"
参考)3分 Code Reading - date編

URLエンコード・デコード


2010-11-29



久々にperlをいじったけど、すっかりURLエンコードについて忘れてる…。
やり方もいろいろある用で…。うーん
とりあえず、「+」だけは 別で置換しろ・・・と。
sub url_encode($) {
    my $str = shift;
    $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
    $str =~ tr/ /+/;
    return $str;
}
sub url_decode($) {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return $str;
}