Tuesday, September 29, 2009

Shell script 練習

看到Ols3前輩出的練習題,故嘗試寫看看,題目是這個樣子的:
# 把 以下資料檔 d1.txt d2.txt 予以整合
d1.txt
====================
abc:12
bob:25
cdc:36
OK:121
Tomy:99
Jack:108

d2.txt
====================
Jack:9
cdc:8
OK:11
Tomy:22
bob:5
abc:88

試寫一 script 來處理 d1.txt d2.txt 使其變成

abc:12:88
bob:25:5
cdc:36:8
Jack:108:9
OK:121:11
Tomy:99:22

My script:
#!/bin/bash

for VAR1 in `cat ./d1.txt | sort`
do
for VAR2 in `cat ./d2.txt | sort`
do
if [ `echo $VAR1 | cut -d: -f1` = `echo $VAR2 | cut -d: -f1` ]; then
echo $VAR1\:`echo $VAR2 | cut -d: -f2`
fi
done
done

References:

Thursday, September 24, 2009

Powerful web application and network load testing tool: curl-loader

找到了一個還蠻強大的web application與network load testing的工具: curl-loader
curl-loader是based on Linux並號稱可以提供類似SpirentAvalanche與IXIA loader的功能(IXIA用過,但是IXIA loader我可是沒用過 XD),同時間透過curl-loader可以產生上萬筆的clients來產生實際的HTTP或是FTP的流量,重點是透過它的configure file,curl-loader會自動的幫你bind IP,真是貼心的設計呀,使用之前最好是依照它的建議更改些Linux預設的參數,當然如果要產生big real flow那就要使用高檔點的機器囉,帽客實際上跑了一下,發現到當產生30K HTTP clients時,會將dual core(Intel C2D E4500)的CPU resource全部吃光光!

建議調整的參數:
ulimit -n 100000
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 100000 > /proc/sys/fs/file-max
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ethX/rp_filter
echo "109568 109568 109568" > /proc/sys/net/ipv4/tcp_mem

Monday, September 21, 2009

Wednesday, September 16, 2009

Linux上常見的Load Balancer Project

常見的有:
Linux Virtual Server
Ultra Monkey
Red Hat Cluster Suite
High-Availability Linux

References:

Friday, September 11, 2009

OSX 10.5.x 重大更新通知

OSX剛剛提醒我目前有更新囉,這次的更新還不小,有iTunes, QuickTime, Java for MAC與Security update。

Wednesday, September 09, 2009

只印出本次登入所輸入的命令

Linux系統預設上可透過history(bash內建的指令)看到以前與本次登入所輸入的所有命令,而當使用者登出系統後系統會自動將本次登入時所輸入的所有命令新增到 ~/.bash_history中,至於最多紀錄多少筆則要取決於HISTSIZE/HISTFILESIZE設定為多少(兩者預設應該都是1000),所以排除舊的命令歷史記錄,新的紀錄應該會從1001開始,於是乎可以利用以下簡單的方法列印出目前登入所輸入的所有指令:

# history | while read cmd; do set -- $cmd; if [ $1 -gt 1000 ]; then echo "$1:$2";fi; done
1001:history
1002:set
1003:history
1004:ifconfig
1005:history

Note:
1. 預設上HISTFILESIZE是設定~/.bash_history可紀錄多少筆,預設是1000,假設今天設定成2000則代表~/.bash_history可存放2000筆記錄,於是乎上面的指令就必需改成這樣:
# history | while read cmd; do set -- $cmd; if [ $1 -gt 2000 ]; then echo "$1:$2";fi; done

2.若~/.bash_history未滿1000筆時,那就要特別注意判斷的條件了。