ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2013年12月16日月曜日

シェルで文字列比較

シェルで文字列比較をしたかったので。
#!/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 の中で何もしたくない時は「:」を使う。

再帰的にファイル数、ディレクトリ数を取得する

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年11月14日木曜日

MaxClientsとServerLimit

Apache の MaxClients を増やす時は ServerLimit 以上の値には出来ない。
設定すると以下のようなエラーが吐かれる。
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. マウントポイントの作成
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

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-)とかで有れば削除できる。