ファイルコピーシェルスクリプト
ファイルをコピーする際に作成したときのメモ。
ベースとなる[standard.txt]を[copy.lst]に記載されているファイル名分だけコピーし、
ファイル内に記載されている[standard]文字を各リストの名称へ変更する。
ベースファイル[standard.txt]
aiueo standard kakikukeko
コピー先ファイル名一覧[copy.lst]
minutes hours daily
シェルスクリプト[filecopy.sh]
*ファイルの上書き確認などを行っていないので注意*
#!/bin/sh
LIST=./copy.lst
STANDARD="standard.txt"
while read line
do
# ファイルをコピー
cp $STANDARD $line.txt
# ファイル内の[standard]文字列を[copy.lst]記載の文字列に置き換え
echo -e "%s/standard/$line/g\\nw" | ed - $line.txt
done < ${LIST}[standard.txt][copy.lst][filecopy.sh]を同じ階層に配置して、シェルスクリプトを実行。
[minutes.txt][hours.txt][daily.txt]が作成される。
ちなみに[minutes.txt]は
aiueo minutes kakikukeko
となる。
phpでexception_handler設定
phpにてexception_handlerを使用した時のメモ
exception_handlerは*catchされなかった例外*に対して処理を指定できる。
try {} catch () {}された場合はcatch内の処理が実行。
マニュアル->http://php.net/manual/ja/function.set-exception-handler.php
*php-version:5.1.6*
[exception.php]
<?php
/**
* ExceptionHandler処理
**/
function exception_handler(Exception $e) {
$class_name = get_class($e);
switch ($class_name) {
case 'Exception':
print "Exception_error\n";
break;
default:
print "error\n";
break;
}
}
// exception_handlerをセット
set_exception_handler('exception_handler');
// 例外をthrow(try{}catch{}を動かす場合はコメントアウト)
// exception_handerが実行される
throw new exception();
// 例外をthrow(catch含む)
try {
// catch内処理が実行される
throw new exception();
} catch (Exception $e) {
print "catch_Exception_error";
}
?>uncatchExceptionの発生時にコールされる。
phpでerror_handler設定
phpにてerror_handlerを使用した時のメモ
error_handlerは実行時にエラーが発生した時の処理を指定できる。
trigger_errorで投げたエラーに対する処理とか。
マニュアル->http://php.net/manual/ja/function.set-error-handler.php
定義済みエラー番号(マニュアル)->http://www.php.net/manual/ja/errorfunc.constants.php
*php-version:5.1.6*
[errorhandler.php]
<?php
// error_handler設定処理
// error発生時の処理を指定
function error_handler($error_no, $error_msg, $error_file, $error_line) {
print $error_no;
switch ($error_no) {
case E_WARNING :
print "[$error_no]E_WARNING $error_msg\n";
break;
case E_NOTICE:
print "[$error_no]E_NOTICE $error_msg\n";
break;
case E_USER_ERROR:
print "[$error_no]E_USER_ERROR $error_msg\n";
break;
default:
print "[$error_no]DEFAULT $error_msg\n";
}
}
// error_handler設定
set_error_handler('error_handler');
// E_WARNING発生
$i=5/0;
// E_USER_ERROR発生
trigger_error("error E_USER_ERROR", E_USER_ERROR);
?>マニュアルにもあるが[E_ERROR][E_PARSE]などハンドリングできないエラーがあるので確認して使う。
ファイル検索
ファイルの置き場所を忘れてしまったときに便利なコマンド
locate 検索文字列
例)ファイル[sub.html]を検索する。
[hoge@localhost ~]$ locate sub.html /usr/local/apache2.2/htdocs/sub.html
findコマンドとは異なり、DBをもとにファイル検索を行うため、かなりの速度で検索結果が表示。
※検索文字列を含むファイルを検索するため、ファイル名の一部分で検索が可能。
※逆に絞り込みがあまいとたくさんのファイルが引っかかってしまう。
DBベースのためviなどで作成したばかりのファイルはlocateコマンドでは検索できない。
その場合はlocate用のDBを更新。
■DB更新コマンド
※処理時間がかかるので実行タイミングには注意が必要。
[hoge@localhost ~]# updatedb
夜中に更新されていたのでcronを確認したところdailyに登録されていた。
■DB
locateコマンドで使用しているDB情報はlocate.dbファイルにある
内容が気になったらlocateコマンドで検索してみること。
[hoge@localhost ~]# locate locate.db
サーバーのリソース使用状況表示
サーバリソース(memory,swap,cpu等)の使用状況を一秒置きに表示する。
vmstat -n 1
上記コマンドにより標準出力にて下記が表示。
[root@XXX ~]# vmstat -n 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 116 211692 252808 3047644 0 0 2 14 3 4 0 0 100 0 0 0 0 116 211692 252808 3047644 0 0 0 0 1025 299 0 0 100 0 0 0 0 116 211692 252808 3047644 0 0 0 0 1005 278 0 0 100 0 0 0 0 116 211692 252808 3047644 0 0 0 0 1022 313 0 0 100 0 0 ※一秒置きに表示
表示間隔を変更したい場合は
vmstat -n ○<-ここに希望の数字を入力。
5秒置きの場合は
vmstat -n 5
コマンドを実行しておくことで都度状況が確認できる。
テキストファイルに出力する事で、ログファイル的なものも作成可能。
その場合、実行時間が付いていると便利なので追加。
vmstat -n 1 | (awk '{now=strftime("%Y-%m-%d %T "); print now $0}' > vmstat.txt )※コマンドの実行結果がファイル(vmstat.txt)へ書き出されるまで15秒程度の時間がかかります。
[root@XXX hogeuser]# date(コマンド実行時刻)
2011年 11月 18日 金曜日 18:54:09 JST
[root@XXX hogeuser]# vmstat -n 1 | (awk '{now=strftime("%Y-%m-%d %T "); print now $0}' > vmstat.txt )
※実行終了
[root@XXX hogeuser]# date(コマンド終了時刻)
2011年 11月 18日 金曜日 18:56:21 JST
[root@XXX hogeuser]# cat vmstat.txt
2011-11-18 18:54:11 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
2011-11-18 18:54:11 r b swpd free buff cache si so bi bo in cs us sy id wa st
2011-11-18 18:54:11 1 0 116 210664 252888 3048384 0 0 2 14 4 4 0 0 100 0 0
2011-11-18 18:54:12 0 0 116 210664 252888 3048384 0 0 0 0 1024 313 0 0 100 0 0
2011-11-18 18:54:13 0 0 116 210664 252888 3048384 0 0 0 0 1003 311 0 0 100 0 0
(省略)
2011-11-18 18:56:07 1 0 116 210540 252888 3048392 0 0 0 0 1003 279 0 0 100 0 0
2011-11-18 18:56:08 0 0 116 2[EOF]※18:56:07〜18:56:21までの情報が書き出されていない。
コマンド実行を終了した場合、終了時刻の-15秒程度までの結果しかファイルに書きだされていない。
確認に必要な時刻+30秒程度は動作させたのち、コマンドを終了するのが安全。
実行時間を付けたコマンドを標準出力に出力して、ターミナルでログを取れば問題ないです。
ディレクトリ数を表示
配置されているディレクトリの数を知りたい場合のコマンド。
find [ディレクトリ名] -type d | wc -l
上記コマンドにより、指定されたディレクトリの配下に存在するディレクトリ数が表示。
[root@XXX hogeuser]# find work -type d | wc -l 3355
「find」コマンドの「-type」オプションを使用し「d[ディレクトリ]」を指定して検索。
[root@XXX hogeuser]# find work -type d work work/111024 work/111024/hoge work/111024/hogehoge (省略)
各ディレクトリが1行ごとに表示される。
その結果(行数)を「wc」コマンドの「-l」オプションに渡す事でディレクトリ数を表示。
サッと使えると便利なこと多いです。
mysqlの型と数値
mysqlで指定する事ができる、型指定の後ろにつく(8)等の数値について。
int(8)等の数値はゼロ埋め指定をした時に機能するものであり、挿入できる桁数などには影響しない。
よって、挿入可能な値は
int(1) INT = 4byte = -2147483648 〜 2147483647 int(10) INT = 4byte = -2147483648 〜 2147483647
となる。
一方、varchar(2)などは挿入可能文字数を指定する事になり、
varchar(10)は10文字 varchar(255)は255文字
となる。
数値の場合と文字の場合を混同しない。