« 2008年3月 | トップページ | 2008年5月 »

2008年4月

2008-04-30

[mysql] やる夫がselect結果をソートするようです。

select 結果をソートする

最近何をムキになって更新しているか、考える今日この頃・・・。そろそろ同でも良くなってきたが、ソート表示する方法を記載します。

  • select [column_name] from [table_name] order by;

ソート

# mysql
mysql> select yaruo_time from yaruo_table order by yauro_time LIMIT 5;
+------------+
| yaruo_time |
+------------+
|       NULL |
|       NULL |
|       NULL |
|         12 |
|         23 |
+------------+
5 rows in set (0.14 sec)

逆順ソート

# mysql
mysql> select yaruo_time from yaruo_table order by yaruo_time DESC LIMIT 5;
+------------+
| yaruo_time |
+------------+
|      12096 |
|       8552 |
|       6112 |
|       5892 |
|       5736 |
+------------+
5 rows in set (0.14 sec)

----------------------------------------

現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-28

[mysql] やる夫がスロークエリログを見やすくするようです。

mysqldumpsloでスロークエリログを見やすくする

見出しの通り・・・

  • mysqldumpslow [log_name]

スロークエリ調査には下記cronとか仕掛けておけばよいでしょう。下記例では、ファイル名の形式は、”[hostname].slowqueries.yyyynndd”で出力先は”/usr/local/mysql/logs/slowqueries/”配下となります。

# crontab -e
-----
16 8 * * * /usr/bin/mysqldumpslow /usr/local/mysql/logs/yaruo_db.slowqueries.1 > /usr/local/mysql/logs/slowqueries/`hostname`.slowqueries.`date +%Y%m%d --date '1 day ago'`
-----

  • --date '1 day ago' は一日前の日付時間を取得します。

いや・・・たんにスロークエリログは1日に一回ログローテートするので、1日前の日付の方がいいかな?とかそんな感じです。

----------------------------------------

現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-25

[shell] やる夫がcase文でshellを作成したようです。

case文でホスト名判定して、処理を変える

最近ネタがない・・・。下記のようなshellを作ることがあったのでカキマスタ。

例えばやる夫のサービス環境が下記のような感じで、各サーバの用途によってshellの実行結果を変更したいとき、case文を使ってみては如何でしょうか?

  • indigo05 ~ indigo08 サーバはwebサーバ
  • navyblue1 ~ navyblue4 サーバはaplサーバ

          ____
       / \  /\ キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \   iti is not a pertinent server...
    |      |r┬-|    |  
     \     `ー'´   /   
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

標準出力って普通英語で書きますよね(もちろんエキサイト翻訳)・・・。日本語で出力すれば親切かと思いきや人によって、リモートツールの文字コードがバラバラなので、英語で書いて上げるのが親切だと思っています。

英語で書いて気取ってるんじゃねぇ~よって言う、やる夫の考えは実は間違え・・・。

# vi sample_case.sh
-----
### hostname set
nodename=`hostname`

###-----
### deploy
case "$nodename" in

    ### indigo05~indigo08サーバにmatch
    indigo0[5-8])
        echo "yaruo_1"  ※ココに処理を書く
        ;;

    ### navyblue1~naviblue4サーバにmatch
    navyblue[1-4])
        echo "yaruo_2"
        ;;

    ### 上記matchしなかったサーバ
    *)
        echo "it is not a pertinent server..."
        exit 1
        ;;

esac
-----

| | コメント (0) | トラックバック (0)

2008-04-23

xargs [ファイル管理コマンド]

xargsコマンド

標準出力から引数を読み込み、指定のコマンドを実行するコマンドです。

  • # [command] | xargs [command]

下記では、”/usr/local/yaruo/conf”ディレクトリから、”.conf”のつくファイルを検索し、その標準出力結果から、”yaruo”という文字列を”grep”するものです。

# find /usr/local/yaruo/conf -name  \*.conf -type f | xargs grep -n yaruo
/usr/local/yaruo/conf/httpd-yaruo.conf:4:##    /usr/local/yaruo/conf/httpd-yaruo-default.conf
/usr/local/yaruo/conf/httpd-yaruo.conf:266:<Directory /usr/local/yaruo/neet>
/usr/local/yaruo/conf/httpd-yaruo.conf:270:<Directory /usr/local/yaruo/neet_key>
/usr/local/yaruo/conf/httpd-yaruo.conf:274:<Directory /usr/local/yaruo/drp>
/usr/local/yaruo/conf/httpd-perl.conf:32:DocumentRoot /usr/local/yaruo/htdocs
/usr/local/yaruo/conf/httpd-perl.conf:33:<Directory "/usr/local/yaruo/htdocs">

  • grep -n オプションは、行番号を表示します。
  • find -type f オプションは、通常ファイルのみを検索表示します(シンボリックリンクとかは外す)。

標準出力結果から、あるコマンドを叩きたい場合に利用します。へぇ~。

| | コメント (0) | トラックバック (0)

2008-04-22

やる夫がmemcachedをインストールするようです。

memcached について

オブジェクトをメモリにキャッシュさせるPHPとは独立したサーバプログラムです。
利用できる言語はPHPだけに限らずPerl、Ruby、Java、Pythonなどにも対応しているようです。

     ____ 
   /      \
  /  ─    ─\ 
/    (●)  (●) \   負荷の問題でのしのぎ対応では

|       (__人__)    |         キャッシュがカギを握るお・・・。
/     ∩ノ ⊃  /  
(  \ / _ノ |  |  
.\ “  /__|  |   
  \ /___ /

     ____
   /      \ ( ;;;;(
  /  _ノ  ヽ__\) ;;;;) 
/    (─)  (─ /;;/   キャッシュ効かせまくると
|       (__人__) l;;,´         ユーザから更新されないと苦情がくる・・・。
/      ∩ ノ)━・'/    
(  \ / _ノ´.|  |
.\  "  /__|  | 
  \ /___ /  

   / ̄ ̄\    いや・・・キャッシュ時間については、要調整として
 /   _ノ  \       最近なにかとサイト終了させようとしすぎじゃね?
 |    ( ●)(●)               ____
. | U   (__人__)            /      \
  |     ` ⌒´|           /─    ─  \
.  |        }  \      / (●) (●)    \   サイト終了の
.  ヽ        }     \     |   (__人__)       |    告知していいかお?
   ヽ     ノ       \   \            _/   
   /    く. \      \  ノ           \
   |     \  \    (⌒二              |
    |    |ヽ、二⌒)、      \         |  |

memcaced インストール

# wget http://www.monkey.org/~provos/libevent-
1.4.3-stable.tar.gz
--11:38:09--  http://www.monkey.org/~provos/libevent-1.4.3-stable.tar.gz
           => `libevent-1.4.3-stable.tar.gz'
www.monkey.org をDNSに問いあわせています... 152.160.49.201
www.monkey.org|152.160.49.201|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 479,756 (469K) [application/x-gzip]

100%[==========================>] 479,756       79.90K/s    ETA 00:00

11:38:16 (72.74 KB/s) - `libevent-1.4.3-stable.tar.gz' を保存しました [479756/479756]

# tar -zxvf libevent-1.4.3-stable.tar.gz
# cd libevent-1.4.3-stable
# ./configure
# make
# make install

memcached 動作方法

どこいったかな・・・?

configureの設定で何処にインストールするかとか設定すると思うのですが、よく分かっていないので、デフォルトで実施しました。どこにmemcachedの起動ファイルがあるかは下記等で探してください。通常は”/usr/local/bin”のようです。

# updatedb
# locate memcached
/home/sugimoto/memcached.tar
/usr/local/mantle-1.6.1/SOURCES/.svn/wcprops/memcached-1.1.12.tar.gz.svn-work
/usr/local/mantle-1.6.1/SOURCES/.svn/prop-base/memcached-1.1.12.tar.gz.svn-base
/usr/local/mantle-1.6.1/SOURCES/.svn/props/memcached-1.1.12.tar.gz.svn-work
/usr/local/mantle-1.6.1/SOURCES/.svn/text-base/memcached-1.1.12.tar.gz.svn-base
/usr/local/mantle-1.6.1/SOURCES/memcached-1.1.12.tar.gz
/usr/local/bin/memcached

起動+停止

[起動]
# /usr/local/bin/memcached -d -m 1280 -p 11211 -u nobody -l `hostname -i`
# ps axuw | grep mem | grep -v
grep
nobody   24322  0.0  0.2  6800 4420 ?        Ss   11:44   0:00 /usr/local/bin/memcached -d -m 1280 -p 11211 -u nobody -l 172.19.44.213

[停止]
# ps ax | grep mem | grep -v grep | awk '{print $1}'
24322
# kill -9 24322

| | コメント (0) | トラックバック (1)

2008-04-21

vmstat [プロセス管理コマンド]

vmstat コマンド

メモリーやCPUの負荷率や使用状況を表示するコマンドです、サーバ負荷の確認時に利用します。”vmstat [n]”でn秒感覚で出力します。

$ vmstat 5
   procs                      memory      swap          io     system      cpu
r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
0  0  0  43528   4484  33748  58208    0    1     6     4    2     1  3  3  3
0  0  0  43528   4492  33756  58260    0    0     0    32 1018   494  1  8 91
1  0  0  43528   4492  33756  58324    0    0     0    38  966   515  2  8 91
[↓swapしている]
0  0  2  43528   4492  33756  58344  789   89     0    30  710   256  2  5 93
1  0  0  43528   4492  33760  58384  650   72     2    46  727   281  2  4 93

  • procs アクティブなプロセスに関する統計
  • memory メモリーの使用量と使用可能量に関するデータ
  • swap  スワップに関する統計
  • iO デバイスとの転送量
  • system システム全体の割り込みおよびコンテキストの切り替えレート
  • cpu CPUの使用量の割合

| | コメント (0) | トラックバック (0)

2008-04-17

[shell] やる夫がsleep使ったshellを作成したようです。

sleep を利用して特定時間にコマンドを実行する

他にも使い方はあるのかも知れませんが、一般的には、”sleep [n]”で n秒間待機します。下記サンプルでは、mysqlのプロセスリストを、15秒間置きに取得して、prosesslistyyyymmddHHMMSS という形式で出力するものです。

# vi prosesslist.sh
-----
#!/bin/sh
yaruo_num=0

# 240回ループします。15秒×240で1時間分の取得
while [ $yaruo_num -ne 240 ]
do

    mysqladmin processlist > prosesslist`date +%Y%m%d%H%M%S`
    sleep 15    #15秒間の待機
    yaruo_num=`expr $yaruo_num + 1`

done
-----
# ls
[実行]
prosesslist.sh
# ./prosesslist.sh

[結果]
# ls
prosesslist.sh  prosesslist20080417101918  prosesslist20080417101933

| | コメント (0) | トラックバック (0)

2008-04-16

[shell] やる夫がindexを確認するようです。

INDEXの確認方法

”show index from [table_name]”で確認できます。postgreSQLだと、”\d [table]”で確認できるので楽ですね・・・。

mysql> show index from yaruo_tb;
+----------+------------+---------------+--------------+--------------+----
| Table    | Non_unique | Key_name      | Seq_in_index | Column_name  |
+----------+------------+---------------+--------------+--------------+----
| yaruo_tb |          0 | PRIMARY       |            1 | neet_id      |   
| yaruo_tb |          0 | PRIMARY       |            2 | jitaku_id    |   
| yaruo_tb |          0 | yaruo_neet_id |            1 | neet_user_id |   
+----------+------------+---------------+--------------+--------------+----
3 rows in set (0.00 sec)

----------------------------------------

現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-15

やる夫がmtuの設定変更するようです。

mtuとは

通信ネットワークにおいて、1回の転送で送信できるデータの最大値を示す値のようです。最近ではデフォルトは1500だったとか・・・。ものによっては1440とかになっているようです(ウソ書いてるかも)。

        ノ L____
       ⌒ \ / \
      / (○) (○)\
     /    (__人__)   \   
     |       |::::::|     |    反応がないとイライラするお!
     \       l;;;;;;l    /l!| !     リモートごとブチ切るお!!
     /     `ー'    \ |i
   /          ヽ !l ヽi
   (   丶- 、       しE |そ  ドンッ!!
    `ー、_ノ       ∑ l、E ノ <
               レY^V^ヽl  

1440だとNFSサーバへの通信が悪くなったりするようです。たとえば”df”打っても返答が遅いとか・・・。※コレはメモ程度・・・。

mtu設定変更

下記でmtuの設定変更が可能です。リブートやNICの再起動は必要ないです。

# ifconfig eth0 mtu 1500

サーバの再起動時設定が元に戻る可能性がありますね・・・。変更されたか確認してみる。

# /sbin/ifconfig | grep MTU
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

| | コメント (2) | トラックバック (0)

2008-04-14

[mysql] やる夫がDBコネクションをkillするようです。

やる夫がスロークエリに悩まされているようです。

週明け早々からアボンヌしてしまいました。活性保守メンテナンスなのですが、処理が重くついでに、他の設定も加えたため、idleが0に差し込みました。休み中雲隠れしとけばよかった・・・。

         ____
       /::::::::::  u\  
      /:::::::::⌒ 三. ⌒\    監視からの電話が鳴り止まないお・・・。
    /:::::::::: ( ○)三(○)\ 
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          |
    ノ::::::::::u         \ | |          |
  /:::::::::::::::::      u       | |          |
 |::::::::::::: l  u             | |          |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |

# sar
07時45分01秒       CPU     %user     %nice   %system   %iowait     %idle
07時50分01秒       all     20.90      0.00      9.95     60.64      8.51
07時55分01秒       all     16.33      0.00      7.79     72.91      2.97
08時00分02秒       all     15.26      0.00      6.73     76.42      1.59
08時05分01秒       all     14.20      0.00      6.31     78.51      0.98
08時10分01秒       all     14.82      0.00      6.29     78.05      0.83
08時15分01秒       all     14.14      0.00      5.85     79.47      0.53
08時20分01秒       all     13.16      0.00      5.47     80.84      0.53
08時25分01秒       all     13.23      0.00      5.48     80.84      0.45
08時30分01秒       all     12.49      0.00      4.98     82.04      0.48
08時35分01秒       all     11.78      0.00      4.88     82.88      0.46

DBへのコネクションがやたら多い・・・。

# netstat | grep -c ESTABLISHED
502
# netstat | grep ESTABLISHED | grep -c 192.168.2.12
240

  • Maxconectionsは512です。普段は260くらいとします。
  • 上記例だと、”192.168.2.12”からのコネクションで半分を使い果している感じです。

”192.168.2.12”は監視orバッチ系のサーバなので、アプリを停止しました・・・が、selectはDBサーバに滞留しちゃうので、DB側でプロセスを停止しないといけません。

特定ホストからのプロセスを停止する方法

# mysqladmin processlist  | grep 192.168.2.12
| 245713 | neet | 192.168.2.12 | yaruo_db | Sleep   | 5018565  |                |
| 250366 | neet | 192.168.2.12 | yaruo_db | Sleep   | 40324525 |                |

結構見やすいように整形しちゃいましたが、こんな感じで出力されます。左端の数字がプロセスIDなので、ひたすらkillしてやればよいです。kill方法は下記にしるします。

# mysqladmin kill 171491 -u root

----------------------------------------

現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-11

やる夫のサイトにスパムがきまくるようです。

apacheログ確認方法

前回やる夫のサイトにスパムが来たようです。 にてスパム対策方を記載して、スパムを抑止しましたが、IPを変えてスパム投稿してくるようです。今までは目けんしてたのですが、どうもいろんな国からくるのでIP抽出に時間がかかるようです。

     ____
   /      \ ( ;;;;(
  /  _ノ  ヽ__\) ;;;;) 
/    (─)  (─ /;;/   
|       (__人__) l;;,´   スパムがうざいお・・・   
/      ∩ ノ)━・'/      ログもごちゃ×2して見にくいお
(  \ / _ノ´.|  |
.\  "  /__|  | 
  \ /___ /  

   / ̄ ̄\    いや・・・uniqで抽出できるだろ。
 /   _ノ  \     諦めるの早いだろ、常識的に考えて・・・
 |    ( ●)(●)               ____
. | U   (__人__)            /      \
  |     ` ⌒´|           /─    ─  \
.  |        }  \      / (●) (●)    \   サイト終了の
.  ヽ        }     \     |   (__人__)       |    告知していいかお?
   ヽ     ノ       \   \            _/   
   /    く. \      \  ノ           \
   |     \  \    (⌒二              |
    |    |ヽ、二⌒)、      \         |  |

         ____   
       /      \  
      /  ─    ─\   人気ないサービスなので止めてしまった方が得だお
    /    (●)  (●) \       でも、やる夫はIT土方だからしたがうしかないお
    |       (__人__)    | ________
     \      ` ⌒´   ,/ .| |          |
    ノ           \ | |          |
  /´                 | |          |
 |    l                | |          |
 ヽ    -一ー_~、⌒)^),-、   | |_________|
  ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  |

正直このやる夫の下りは必要ないのですが、ポリシーです。では問題のapacheログを見てみましょう。今回は”hogehoge”で抽出します。trackbackやcommentが対象なら、それで引っ掛けて見ましょう。

# grep hogehoge indigo02.access.log
Apr 11 09:17:40 indigo02 httpd-perl.conf[8717]: [debug] [14336] [client UGI2xx5057@202.28.27.4] Throttling comment/hogehoge attempt from 202.28.27.4/http://index8.bab2you.com
Apr 11 09:17:49 indigo02 httpd-perl.conf[8717]: [debug] [11243] [client 125.2.109.94] Received hogehoge ping with details title=・「・・ル・・ソ・ユ・ァ・・テ・ニ・」;excerpt=・「・・ル・・ソ・ユ・ァ・・テ・ニ・」、ヒ、ト、、、ニ、ホ・????、ヌ、ケ。」・「・・ル・・ソ・ユ・ァ・・テ・ニ・」、ホセメイヌ、ケ。」;url=http://maruta.be/albertaferretti;blog_name=・「・・ル・・ソ・ユ・ァ・・テ・ニ・」
Apr 11 09:17:52 indigo02 httpd-perl.conf[8717]: [debug] [11582] [client eunxheui@202.28.27.4] Throttling comment/hogehoge attempt from 202.28.27.4/http://index8.bab2you.com
Apr 11 09:18:12 indigo02 httpd-perl.conf[8717]: [debug] [11302] [client qxx_ep@77.91.227.113] Throttling comment/hogehoge attempt from 77.91.227.113/http://anxi.madoo.com/0a242/

こんな感じでタラタラ(膨大)と出力されます。やらない夫が教えてくれた”uniq”コマンドを利用して、アクセス数の多いclientリストを作成します。

# grep "TrackBack" yaruo.txt | awk '{print $8,$9}' | sort | uniq -c | sort -r
      5 [client 82.146.52.103]
      4 [client 222.73.57.233]
      3 [client 125.2.109.94]
      2 [client 67.196.115.235]
      1 [client 210.194.15.215]

  • awk '{print $8,$9} で、スペースを目処に、8個目と9個目を出力します。

補足ですが、コレで確認できるIPがスパムとは限りません。IP検索ひろばとか、”whois”コマンド等で判断して下さい。

uniq コマンド

uniqコマンドはソート済みファイルの重複を削除します。

# cat yaruo.log
yaruo
yaruo
yaruo
yaranaio
yaranaio
yaranaio
neet
neet
neet
neet
neet
$ uniq -c yaruo.log
      3 yaruo
      3 yaranaio
      5 neet

  • -c オプションで重複行の数を出力します。
  • -d オプションで重複行のみ出力します。
  • -u 重複のない行のみ出力します。

| | コメント (0) | トラックバック (0)

2008-04-10

やる夫のサイトにスパムが来たようです。

apacheスパム対応

たまにスパムが襲撃することがあります。辞めてもらいたいです・・・。やる夫のサイトにも
スパムが来たようです。


やる夫のサイトを見る権利を与えるお!!
                                  /   |  |  l ヽ
                                  |. `|  |  l  l.  |
                / ̄\      「 ̄ ̄ ̄ ̄ ̄ ̄|  |  ,' / ノ ̄ ̄|
               |     |      |         ヽ_j  / //     |
                \_/      |     権利書ヽ_ハ/′     |
                  |        |                    |          
              /  ̄  ̄ \    |     やる夫 neet対策サイト  |
             /  \ /  \..  |     ・・・ ・・・ ・・・       |
           /   ⌒   ⌒   \ |     ・ ・ ・・ ・・・        |
           |    (__人__)     |/|                    |
           \    ` ⌒´    /l|.| :::::::::::::::::::::::: |
           ヽ、--ー、__,-‐´イ   l リ :::::::::::::::::::::::: |
             >'´/ / _,.ノ|/    l.| :::::::::::::::::::::::: .|
           ,r7′_,.レァ‐‐'′、 l  i  l|              __     |
          /,厶イ_:.:/    ヽヽ. :l  |            〃.  `ヾ   |
          /7   /:.:「       ゝL/|   ::::..... |l neet ||..  |
        /〈  /:.:.:.:',    /  //   |   ::::        |l 株. l.|..  |
       ∧',. ヘ /:.:.:.:.:.:',  /   〃   |            ヾー-‐シ    |
      / ヽヽ V:.:.:.:.:.:;.イヘ     トr'′  .!               ̄´    |
      l `ヽ >、フ:.:.:.:/:.:./     l    └─────────────

お言葉に甘えて、スパムさんが来たようです。

            ___
       /      \       
      /ノ  \   u. \ !?
    / (●)  (●)    \ おっお・・・
    |   (__人__)    u.   |
     \ u.` ⌒´      /     サイトが重くて使えなくなったお・・・
    ノ           \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

スパム確認方法

# view indigo02.access.log
-----
211.112.0.0 - - [10/Apr/2008:16:18:51 +0900] "POST /neet/yaruo/hogehoge HTTP/1.1" 403 228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; AT%26T CSM6.0; SV1; .NET CLR 1.1.4322)" yaruo.neet.com 80 "-"
-----

viewで眺めていると、やたらと”211.112.0.0”というアドレスからの接続が多いようです。他になんかいい方法があれば知りたい・・・・。

# cat indigo02.access.log | grep 'hogehoge' | grep '2008:17:3' | gerp 211.112.0.0 wc -l
7645
# echo 211.112.0.0 | xargs whois  | grep Country
Country:    KR

17:30分台で、”211.112.0.0”からのアクセスを調べてみると、約7000件・・・。やる夫のサーバ構成は5台構成(とする)なので、だいたい35000件のアクセスであることが予想されます。10分間に35000ってかなりの数ですね。

        ____.|┃┃
       / ノ   ヽ、 |┃┃ 
     /<●>::::::<●|.┃┃  みんなに開放してのに
    /    .(__人__) |┃┃     随分図にのってくれましたね・・・
    |  ノ(  |r┬ | . |┃┃
.    \⌒   |r l | .|┃┃
    /      `ー'  |┃┃
    / i       (.二つ┃
   { ミi      (.二⊃┃ ミシミシミシ
   l ミii         ト、二)┃
   | ミソ      :..`ト-'. ┃

国を調べてみると、”KR”どこかは良く分からないですが、日本ではないようです。お隣さんですかね?速攻ブラックリストに投入です。apacheだったら下記のような感じで制御します。フィルタ側を閉じちゃっても良いかも・・・。

          γ⌒)       
         / ⊃ ̄ ̄ ̄\       ブラックリストに速追加だお
      〃/ /   ::\:::/::ヽ∩⌒) ))
       γ⌒)  <●>:::<●|/ ノ  
      / _ノ    (__人__)} / ))     
     (  <  .    ` ⌒´ 、( ⌒)   オラオラ
    (( \ ヽ          /     
       ヽ_ _       |ノ    
        |           |     特にアジア系は厳しく
        |         |
        i      ̄\ ./ オラオラ
         \_     |/   
          _ノ \___)       オラオラ
         (    _/
          |_ノ

apache ACL設定

# vi /usr/local/apache/conf/http.conf
-----
<LocationMatch /neet/yaruo>
Order deny,allow
deny from 211.112.0.0/24
</LocationMatch>
-----

| | コメント (0) | トラックバック (0)

2008-04-09

[shell] やる夫がshellで計算するようです。

shellによる計算

shell自体は計算機能を持たないので、exprを使用します。そうなんだ・・・。

下記サンプルshellでは、yaruo.logの行数を取得して、Lineに格納し、その値に対して-1を実施しています。

    / ̄ ̄ ̄ \
   / ::::\:::/:::: \   ・・・・・・・
 /  <●>::::::<●>  \     shellの基本的なことなのですが・・・。
 |    (__人__)     |
 \    ` ⌒´    /

# wc -l yaruo.log
33 yaruo.log
# vi sample.sh
-----
Line=`wc -l yaruo.log | cut -f1 -d' '`
### extra line
head_num=`expr $Line - 1`
echo $line
-----
# ./sample.sh
32

  • wc -l でyaruo.logの行数を取得します。
  • cut -f1 -d' ' で行数取得結果の整形をします。

| | コメント (0) | トラックバック (0)

2008-04-08

やる夫がwordpressのログインパスワードを忘れたようです。

WordPressログインパスワードの変更

パスワードリマインダーを使えばよいようですが、メールサーバが立っていないとか、メールが受信できないとか、どうにもならない場合は下記で対応可能です。

         ____
       /::::::::::  u\  
      /:::::::::⌒ 三. ⌒\    WordPress構築したまま、パスわすれてしまたお・・・。
    /:::::::::: ( ○)三(○)\ 
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          |
    ノ::::::::::u         \ | |          |
  /:::::::::::::::::      u       | |          |
 |::::::::::::: l  u             | |          |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |

構築して満足・・・。いざ使おうってとkにパスワードを忘れてしまうことは良くあります。再構築してしまえばよいのですが・・・それがめんどくさければ、DB内のパスワードを直接書き換えちゃいましょう。

”827ccb0eea8a706c4c34a16891f84e7b”でpassword”12345”になります。

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4432 to server version: 5.0.22-standard-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use wp_yaruo
Database changed
mysql> select user_pass from  wp_users;
+----------------------------------+
| user_pass                        |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
1 row in set (0.00 sec)
mysql> update wp_users set user_pass = '827ccb0eea8a706c4c34a16891f84e7b' where user_pass = '21232f297a57a5a743894a0e4a801fc3';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select user_pass from  wp_users;
+----------------------------------+
| user_pass                        |
+----------------------------------+
| 827ccb0eea8a706c4c34a16891f84e7b |
+----------------------------------+
1 row in set (0.00 sec)

| | コメント (0) | トラックバック (1)

2008-04-07

scp [ネットワーク管理コマンド]

scp コマンド

ネットワーク管理コマンドなのかどうかはちょっと微妙ですが、ネットワーク間のファイル転送ができるコマンドです。冗長構成をとっている環境で同じ設定ファイルをコピーするときに便利です。

サーバ構成


    +--------+   +--------+
    |indigo01|   |indigo02|
    +---+----+   +---+--/etc/neet/yaruo.cfg
        |  <--copy   | 
    ----+------------+----------- 192.168.2.0/24   

indigo02の”/etc/neet/yaruo.cfg”ファイルをindigo01の”/etc/neet”配下へコピーする例です。

[indigo01]# pwd
/etc/neet
[indigo01]# ls
yaranaio.cfg
[indigo01]# scp indigo02:/etc/neet/yaruo.cfg /etc/neet/yaruo.cfg
The authenticity of host 'indigo02 (192.168.2.11)' can't be established.
RSA1 key fingerprint is 6c:22:9c:74:d4:1b:46:23:47:9d:ne:et:ya:r5:u7:oe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'indigo02,192.168.2.11' (RSA1) to the list of known hosts.
root@indigo02's password:
yaruo.cfg                                                                              100% 2549     2.5KB/s   00:00
[indigo01]# ls
yaranaio.cfg yaruo.cfg
[indigo01]# scp /etc/neet/yaruo.cfg indigo02:/etc/neet/yaruo.cfg.bak
※こうするとindigo02へ”/etc/neet/yaruo.cfg.bak”としてコピーします。

| | コメント (0) | トラックバック (0)

2008-04-04

[postgresql] やる夫がpostmaster起動に苦戦しているようです。

postmasterが立ち上がらない

一旦postmasterを停止して、再度立ち上げようとしたら、何故かpostmasterが立ち上がりません。下記のようなメッセージがでています。

$ /usr/local/pgsql/bin/pg_ctl -D /user/local/yaruo_db
pg_ctl: another postmaster may be running; trying to start postmaster anyway
2008-04-03 17:23:50 JST  [13176] FATAL:  lock file "postmaster.pid" already exists
2008-04-03 17:23:50 JST  [13176] HINT:  Is another postmaster (PID 17477) running in data directory "/user/local/yaruo_db"?
pg_ctl: could not start postmaster
Examine the log output.

$ psql
psql: FATAL:  the database system is shutting down
$ kill -9 17477
$ /usr/local/pgsql/bin/pg_ctl -D /user/local/yaruo_db start

メッセージとしては、既に立ち上がってない?という感じでしょうか・・・。の割にはpsqlでログインできない。良いか悪いかは別として、postmasterのプロセスが生きていたので、killして再度立ち上げました。

気がついたことといえば、DBへのコネクションがあるにも関わらず、ぶち切ってしまったのが問題のようです、各アプリケーションからのコネクションがある場合は、アプリケーション側を停止してから、postmasterを停止した方が良いです。

コネクションの確認は、”netstat”とかで確認できます。

$ netstat | grep ESTABLISHED
tcp        0      0 localhost:smux              localhost:32533             ESTABLISHED
tcp        0      0 localhost:32785             localhost:43162             ESTABLISHED
tcp        0      0 localhost:32793             localhost:43162             ESTABLISHED
tcp        0      0 localhost:32783             localhost:43162             ESTABLISHED
tcp        0      0 localhost:32781             localhost:43162             ESTABLISHED
tcp        0      0 localhost:41945             localhost:postgres

  • ESTABLISHED でgrepかけて、localhostsのみであれば、他からのアクセスはありません。

----------------------------------------

はじめてのPostgreSQLプログラミング
羽生 章洋 阪上 徹
ソフトバンククリエイティブソフトバンククリエイティブソフトバンククリエイティブ
定価 : ¥ 2,730
2001-10
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-03

[postgresql] やる夫がDB名を変更するようです。

DB名のリネーム

同じDBを違う用途で利用したり、世代管理したりすると思います。各DB毎に1台づつ物理サーバがあれば、よいですが検証環境等にそれほどコストを使うものではありません。1台の物理サーバに対していくつもDBを構築すると思います。そんなときに、DB名を変更したり良くすると思います。

だらだらと書いたけどたいしたこっちゃない。”RENAME TO”で変更可能です。下記例では”yaranaio_db”を”yaruo_db”に変更しています。

postgres=# \l
           List of databases
       Name      |  Owner   | Encoding
-----------------+----------+----------
postgres         | postgres | UTF8
template0        | postgres | UTF8
template1        | postgres | UTF8
yaranaio_db      | postgres | UTF8
(4 rows)

postgres=# ALTER DATABASE "yaranaio_db" RENAME TO "yaruo_db";
ALTER DATABASE
postgres=# \l
           List of databases
       Name      |  Owner   | Encoding
-----------------+----------+----------
postgres         | postgres | UTF8
template0        | postgres | UTF8
template1        | postgres | UTF8
yaruo_db         | postgres | UTF8
(4 rows)

PostgreSQLも別ポートで、DBを立ち上げることが出来るかもしれないが・・・(できないかも)。よくわかってません。とりあえずPostgreSQLのDBは別のdb_nameを与えて上げて管理しています。

この時ばかりはMySQLの方が、使い勝手が良いし構築も楽・・・。

----------------------------------------

オープンソースを使ったデータベースの構築―ApacheサーバとPostgreSQLでデータベース
藤田 泰徳 山崎 文則
セレンディップセレンディップセレンディップ
定価 : ¥ 3,675
2000-09
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-04-02

PostgreSQL リファレンス

インストール

パフォーマンスチューニング

SQL

こんなときどうする?

| | コメント (0) | トラックバック (1)

2008-04-01

bg/fg [プロセス管理コマンド]

bg コマンド

バックグランドでジョブを実行するように切り替えるコマンドです。

ないとは思いますが、長いこと時間のかかるDBレストアコマンドを、フォアグランドで実施したとします。夜な夜なの作業で、寝ぼけて[Ctrl]+[c]を押下してみたとか・・・。

       ____
     /⌒  ⌒\
   /( ●)  (●)\    レストアコマンド打ったし後は
  /::::::⌒(__人__)⌒::::: \           4時間程暇になるお!
  |     |r┬-|     |     
  \      `ー'´     /

      ____
     /_ノ ' ヽ_\
   /(≡)   (≡)\    ニコニコでカイジの続きみるお!

  / /// (__人__) ///\
  |     |r┬-|      |
  \     ` ー'´    /

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ    利根川最高だお!
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒) 
| / / /     |r┬-|    | (⌒)/ / / //
| :::::::::::(⌒)    | |  |   /|^| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|     ノ     | |  |   \| |             |   / ̄ ̄ ̄
ヽ    /     `ー'´     | |            |  <  質問には 
 |    |   l||l 从人 l||l   | |     VAIO     |   \ 一切お答え出来ません・・・・!
 ヽ    ---一ー_~、⌒)、⌒)^),|_|              |     \___
  ヽ _____,ノ|____|_|____________|

           ____
       /:::::::::::::::: \
      /::::::─三三─\     メモリがたんなくなって
    /:::::::: ( ○)三(○)\         PCおちた・・・ちょ・・・おま・・・
    |::::::::::::::::::::(__人__)::::  |  ________
     \:::::::::   |r┬-|   ,/ .| |          |
    ノ::::::::::::  `ー'´   \ | |          |  
  /:::::::::::::::::::::             | |          |  
 |::::::::::::::::: l               | |          |

レストア中盤で、こうなってしまっては悲劇です。再度レストア実施しなければなりません。メンテナンス時間とか遅れちゃいますね。

            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ    遅れた理由は!?
              |         } 
              ヽ        }
            ヽ、.,__ __ノ
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|

    / ̄ ̄ ̄ \
   / ::::\:::/:::: \   ・・・・・・・。
 /  <●>::::::<●>  \   質問には一切お答えしません。 
 |    (__人__)     |
 \    ` ⌒´    /

      / ̄ ̄\   
    /ノ( _ノ  \       ・・・・・・。
    | ⌒(( ●)(●)   
    .|     (__人__) /⌒l
     |     ` ⌒´ノ |`'''|
    / ⌒ヽ     }  |  |              
   /  へ  \   }__/ /             / ̄ ̄\    ニコニ・・・
 / / |      ノ   ノ           / ●)) ((●\’, ・ 
( _ ノ    |      \´       _    (   (_人_)’∴ ),  ’
       |       \_,, -‐ ''"   ̄ ゙̄''―---└'´ ̄`ヽ   て
       .|                  ______ ノ    (
       ヽ           _,, -‐ ''"  ノ       ヽ   r'" ̄
         \       , '´        し/..     | J
          \     (           /      |
            \    \         し-  '^`-J

# updatedb

[1]+  Stopped                 updatedb

# jobs
[1]+  Stopped                 updatedb
# bg 1
[1]+ updatedb &
# ps axuw | grep updatedb
root      7664  0.0  0.0  3568  464 pts/1    S+   07:57   0:00 grep updatedb
[1]+  Done                    updatedb

# updatedb &
[1] 7871
#
[1]+  Done                    updatedb

そうならないように、重要なコマンドはバックグラウンドで実施するようにしましょう。特に私のPCはがっつん×2で落ちるので、正直困ってます。メンテ中に2回も落ちたことあり・・・orzやっててよかった、cron処理・・・。

下記例では、ジョブの一時停止と、バックグランドへの切り替え方法になります。対象コマンドは、やたらと時間のかかる”updatedb”でやtってみます。

  • jobs で現在のジョブの登録状況を確認します。Stoppedは停止中ですね。
  • bg [job登録番号] でバックグランドへ切り替えします。上記例だと[1]ですね。
  • コマンド実行時に & を後ろに付けると、はじめからバックグランドで動きます。

fg コマンド

フォアグラウンドでジョブを実行するよう切り替えるコマンドです。

# updatedb

[1]+  Stopped                 updatedb
# fg 1
updatedb

| | コメント (0) | トラックバック (1)

« 2008年3月 | トップページ | 2008年5月 »