#!/bin/sh
ARRAY=(aaa bbb ccc abc)
for ITEM in ${ARRAY[@]}; do
case $ITEM in
*c)
# ccc, abc
echo "cで終わる。"
;;
a*)
# aaa
echo "aで始まる。"
;;
*)
# bbb
:
;;
esac
done
あと、 if とか case の中で何もしたくない時は「:」を使う。
2013年12月16日月曜日
シェルで文字列比較
シェルで文字列比較をしたかったので。
再帰的にファイル数、ディレクトリ数を取得する
CentOSは1つのディレクトリに最大32000個までしかディレクトリを作れない。
でも作るシステムによってはテンポラリのディレクトリとかが溜まって危ないかもしれないのでチェックスクリプトを作ってみた。
でも作るシステムによってはテンポラリのディレクトリとかが溜まって危ないかもしれないのでチェックスクリプトを作ってみた。
#!/bin.sh
DIR=/home/hoge/
Seek(){
for ELEM in * ; do
if [ -d "$ELEM" ] ; then
# ファイルだけなら -type f
# ディレクトリだけなら -type d
CNT=`find "$ELEM" -maxdepth 1 -type d | wc -l`
if [ $CNT -ge 5000 ] ; then
# 5000個を超えているものだけ出力
PWD=`pwd`
echo "$PWD/$ELEM : $CNT"
else
# 5000個を超えていないディレクトリだけさらに再帰的に処理
(cd "$ELEM";Seek;)
fi
fi
done
}
2013年12月3日火曜日
2013年11月14日木曜日
MaxClientsとServerLimit
Apache の MaxClients を増やす時は ServerLimit 以上の値には出来ない。
設定すると以下のようなエラーが吐かれる。
まあ graceful すると以下のようなメッセージで教えてくれるけど。
設定すると以下のようなエラーが吐かれる。
WARNING: MaxClients of 500 exceeds ServerLimit value of 256 servers, lowering MaxClients to 256. To increase, please see the ServerLimit directive.なので場合によっては ServerLimit も変更する必要が有るのだけれど、ServerLimit は graceful では反映されない。
まあ graceful すると以下のようなメッセージで教えてくれるけど。
[warn] WARNING: Attempt to change ServerLimit ignored during restartなのでこういう時はちゃんと restart するべし。
2013年11月5日火曜日
Linux でフロッピーのマウント
CentOS5 で開発ツールだけインストールしたらフロッピーがマウント出来なかったので・・・
1. マウントポイントの作成
2. fstab の編集
3. マウント
ま、今時使うことは無い気はするけど。
1. マウントポイントの作成
mkdir /media/floppy
2. fstab の編集
vim /etc/fstab /dev/fd0 /media/floppy auto pamconsole,exec,noauto,managed 0 0
3. マウント
mount /media/floppy
ま、今時使うことは無い気はするけど。
Linuxで一括改行コード変換
CentOS だと yum で unix2dos とか dos2unix がインストール出来るのそれを使うと楽。
yum install dos2unixでもって find あたり使って一括処理してやるとか。
find . -regex '.*\.js' -exec dos2unix {} \;
2013年2月21日木曜日
シェルでコマンドの実行結果の確認
rsync -avz /home/user/source/ /home/user/dest/ >& /tmp/rsync.log if [ $? -eq 0 ]; then echo "成功" else echo "失敗" fi
シェルからpsql経由でSQL実行
#!/bin/sh DB_NAME='db_name' DB_RET=`psql -U postgres -c "SELECT COUNT'(*) FROM pg_database WHERE dat_name = '$DB_NAME'" postgres | cut -d" " -f3` echo $DB_RET
ラベル:
linux,
postgresql,
sh
2013年2月20日水曜日
rsyncのTIPS
rsyncをSSH経由で使うには、パスワード無しでSSH出来るようにしておく必要が有る。
例えば鍵認証を使う場合は以下のような感じ。
隠しファイル(.で始まるファイル)を除外したい場合は以下の感じ。
自分の配下以外へのシンボリックリンクのみ、先まで辿ってコピーしたい時は以下の感じ。
例えば鍵認証を使う場合は以下のような感じ。
rsync -avz -e 'ssh -i /home/user/server.key' user@server:/home/user/source/ /home/user/dest/
隠しファイル(.で始まるファイル)を除外したい場合は以下の感じ。
rsync -avz --exclude=".*/" /home/user/source/ /home/user/dest/
自分の配下以外へのシンボリックリンクのみ、先まで辿ってコピーしたい時は以下の感じ。
rsync -avz --copy-unsafe-links /home/user/source/ /home/user/dest/
2013年2月8日金曜日
メールのキューの確認と再送
メールのキューの確認は
mailqで、再送したい時は
sendmail -q -v再送の設定なんかは /etc/sysconfig/sendmail 辺りに書いてある。
2013年1月28日月曜日
Linuxのファイル削除権限
Linux でそのファイルが削除できるかどうかは、対象のファイルではなくそのファイルが入っているディレクトリの権限に因る。
ディレクトリに書き込み権限(-w-)があれば、ファイルの削除や新規作成が可能。
なのでファイルが000(---------)でもディレクトリが222(-w--w--w-)とかで有れば削除できる。
ディレクトリに書き込み権限(-w-)があれば、ファイルの削除や新規作成が可能。
なのでファイルが000(---------)でもディレクトリが222(-w--w--w-)とかで有れば削除できる。
登録:
投稿 (Atom)