2019年1月31日 星期四

dhclient 的使用方法

以往都是使用udhcpc 去取得 dhcp的ip address

今天使用的系統,只有dhclient指令可以使用,因此順便記錄一下dhclent使用方法

#/ dhclient [option] [Interface]

EX:
1. 取得dhcp ip
#/ dhclient eth0

2. 釋放ip
#/ dhclient -r eth0


註. 今天假設你已經使用 dhclient eth0 取得了IP,然後你又使用了ifconfig eth0 192.168.2.3(假設設定了這個),接著你再去下 dhclient eth0 你會發現 取不到DHCP的IP了,IP會一直是 192.168.2.3,而此時你就必須作以下步驟:
1. #/ dhclient -r eth0
2. #/ dhclient eth0

這樣就可以再次取得 DHCP的IP

2019年1月25日 星期五

[shell script] 迴圈中,動態變數名稱的使用方法與限制

在Linux4.14.12的環境下

今天我要寫一個Script可以去判斷3顆硬碟的sata速度是否為6.0 Gbps,目前已知Linux底下讀sata硬碟速度的device位置分別為(每台電腦的/sys/class/ata_link/link7/sata_spd  紅字部分會不相同):
        HDD1  ===> /sys/class/ata_link/link7/sata_spd
        HDD2  ===> /sys/class/ata_link/link8/sata_spd
        HDD3  ===> /sys/class/ata_link/link9/sata_spd



完整script寫法,動態變數的方法,如下方粗體字部分:
=================== check_sata_speed.sh ==================
#!/bin/sh
HDD1="7"
HDD2="8"
HDD3="9"

BAY_3=3
i=1

        HDDSPD1=`cat /sys/class/ata_link/link$HDD1/sata_spd | awk -F' ' '{print $1}'`
        HDDSPD2=`cat /sys/class/ata_link/link$HDD2/sata_spd | awk -F' ' '{print $1}'`
        HDDSPD3=`cat /sys/class/ata_link/link$HDD3/sata_spd | awk -F' ' '{print $1}'`

        while [ $i -le $BAY_3 ]
        do
                eval "HDD_SPD=\$HDDSPD$i"
                if [ "6.0" == "$HDD_SPD" ]; then
                        count=$(($count+1))
                else
                        echo "HDD$i Fail"
                fi
                i=$(($i+1))
        done

        if [ $count == $BAY_3 ]; then
                echo "OK"
        fi
=========================================================
如果三顆硬碟都為6.0 Gbps 則最後印出 OK
若是有低於6.0的速度,則會印出Fail


***注意動態變數的使用限制
上面的HDDSPD1~HDDSPD3變數,若是你宣告為 HDD1_SPD ~ HDD3_SPD,則在迴圈內使用(eval "HDD_SPD=\$HDD$i_SPD")動態變數時,是不會成功的,只有把動態變數的數字放在變數名稱最後,才會work

已上~



2019年1月17日 星期四

[Linux] 使用dd 來測試硬碟或是一些儲存裝置的讀寫速度(Read/Write), Throughput testing

我們寫了兩支script 來測試掛載在/mnt/public上的storage throughput(Read/Write)
Write 的部分,我們測試2G的檔案,每次作完dd,我們會去清除cache,sleep 10 秒後,再次執行,總共循環5次

=================== Using dd to test storage write throughput(RX) =================
#!/bin/sh
count="1"
while [ 1 ]
do
dd if=/dev/zero of=/mnt/public/2GGG bs=1M count=2048
sync
echo "sleep 10 sec"
sleep 10
echo 1 > /proc/sys/vm/drop_caches
sync
echo "sleep done"
if [ $count -eq "5" ]; then
 exit
fi
count=$(($count+1))
done
====================================================================


Read 的部分,我們測試2G的檔案,每次作完dd,sleep 5 秒後,再次執行,總共循環5次

=================== Using dd to test storage read throughput(TX) =================
#!/bin/sh
count="1"
while [ 1 ]
do
dd of=/dev/null if=/mnt/public/2GGG bs=1M count=2048
sync
echo "sleep 5 sec"
sleep 5
sync
echo "sleep done"
if [ $count -eq "5" ]; then
 exit
fi
count=$(($count+1))
done
==================================================================:

[shell script] shell script 的無窮迴圈寫法

下面的範例是使用一個while無窮迴圈,每隔1秒,會印出 count值,執行後請按[ctrl+c]來結束程式

==========================================================
#!/bin/sh
count="1"
while [ 1 ]
do
echo $count
count=$(($count+1))
sleep 1
done
=========================================================



另外下面的範例也是使用一個while無窮迴圈搭配判斷式,在跑到第7次時結束並離開程式

==========================================================
#!/bin/sh
count="1"
while [ 1 ]
do
echo "do loop"
if [ $count -eq "7" ]; then
 exit
fi
count=$(($count+1))
done
=============================================================

2019年1月11日 星期五

ibon周五搶好康找不到嗎?告訴你詳細位置

每個禮拜五下午大約 PM2:00 左右,ibon app都會推出周五搶好康的活動,但是常常會讓人不知道該從哪裡去領取,按照下面步驟就可以讓你領到

1. 先開啟ibon APP




















2. 點選"好康紅利"




















3. 點選"會員活動"





















4. 點選"我要領取",領完後在點選"顯示序號"






















最後把序號複製切換到openpoint兌換,就可以了~

Linux清除Caches(快取記憶體)的指令

有的時候再作硬碟的Write Throughput測試時,Cache可能會影響到測試出來的數據,因此就需要用到手動清除快取的指令,在Linux底下,指令如下:

#echo 1 > /proc/sys/vm/drop_caches

然後可以使用以下指令來看到Cache被釋放:

#free -h













*********   備註    **********
要釋放 Linux 的記憶體快取,可以透過更改 /proc/sys/vm/drop_caches 這個檔案的內容來達到,當這個檔案內容被設為 1 時,是表示要求 Linux 釋放沒在使用的一般性快取(pagecache),而設為 2 時,則代表要求釋放 dentry 與 inode 所使用到的快取,若設為 3 則是釋放所有的快取(也就是包含 1 與 2 的狀況)。
****************************

2019年1月9日 星期三

在uboot底下,當沒有mii read/write指令,如何使用phyread phywrite 來設定 LAN 的 Register

首先我們還是得參考mii dump出來的 registaer說明圖,因為沒有mii指令可用,請直接參考底下的圖:

#mii dump 0 0











#mii dump 0 1














phyRead用法:  phyRead <phy-address> <phy-register>
phyWrite用法: phyWrite <phy-address> <phy-register> <values>

Example:
1.      設定phy 0,暫存器0(control register)loopback值為1(default=0)
è  phyRead 0 0x00   --->  0x1140
è  phyWrite 0 0x00 0x5140
è  phyRead 0 0x00   --->  0x5140

2.      讀取phy0,暫存器1(status register15bit)的值
è  phyRead 0 0x01   --->  0x796d

2019年1月4日 星期五

10的負3, 負6, 負9次方(ms, μs, ns)


1 ms = 10-3             //milli-second, 10 的 -3 次方  
1 μs = 10-6             //micro-second, 10 的 -6 次方  
1 ns = 10-9             //nano-second, 10 的 -9 次方   

2019年1月3日 星期四

How to build iperf3 on ARM platform (static build)

1. apt-get install git-core  //install git tool
2. apt-get install make    //install make tool, to make iperf3
3. git clone https://github.com/esnet/iperf   //clone iperf3 source code
4. cd iPerf  //go to the iperf3 source code folder, and compile it
5. ./configure --enable-static --disable-shared ; make ; make install  //static build

按照以上步驟,便可以在你的平台上編譯好 iperf3 並且可以使用~

**若是沒有gcc,而導致configure的時候出錯,請先使用以下指令安裝
apt-get install gcc