2010年3月9日 星期二

Linux 常用指令

xargs : 將前一個指令結果當成下一個指令參數輸入
find -iname "*.tmp" | xargs rm
ls /etc/ldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}


[網路]
#netstat 指令
-t : tcp
-t : udp
-n : 用數字顯示port、host、user names
-a : listening 和 non-listening 都顯示
-l : 只顯示 listening 的資料

例如:
netstat -antp

#ss 指令
-n:用數字顯示(不解析為服務名稱)
-r:嘗試用名稱顯示 address/ports (解析為名稱)
-a:顯示 listening sockets 與 non-listening sockets.(若為 TCP 表示 established connections)
-l:只顯示 listening sockets
-o:顯示 timer 訊息
-e:顯示更詳細的訊息
-m:記憶體使用狀況
-p:顯示使用 socket 的 process
-i:內部的 TCP 訊息
-s:summary  statistics.摘要統計
-4:只顯示 IP4 sockets
-6:只顯示 IP6 sockets
-t:顯示 TCP sockets
-u:顯示 UDP sockets
-d:顯示 DCCP sockets
-w:顯示 RAW sockets
-x:顯示 Unix domain sockets

例如:
ss -ntl
State    Recv-Q    Send-Q    Local Address:Port    Peer Address:Port
LISTEN     0         128                 *:80                 *:*
#註:LISTEN 狀態下的 Send-Q,表示listen backlog(somaxconn),跟 netstat 的 Send-Q 意思不同


[硬體]
#CPU 資訊
cat /proc/cpuinfo

#CPU 核心數
cat /proc/cpuinfo | grep "model name" | wc -l

#CPU 型號
dmidecode -t processor | grep "Version:"

#記憶體資訊
cat /proc/meminfo

#記憶體容量
cat /proc/meminfo | grep "Total"

#安裝幾條記憶體、記憶體安裝情況
dmidecode -t memory | grep "Size:"


[資源使用]
#查看網路使用狀態,每兩秒更新一次
sar -n DEV 2

#查看記憶體使用狀態,每兩秒更新一次
sar -r 2

#查看 CPU 使用狀態,每兩秒更新一次
sar -u 2,每兩秒更新一次

#查看硬碟使用狀態,每兩秒更新一次
sar -d 2

#查看硬碟、CPU使用狀態,每兩秒更新一次,-k,容量單位 KB(Kilobyte)
iostat -k 2

#查看硬碟使用狀態,每兩秒更新一次,-d 只顯示硬碟資料
iostat -d -k 2

#每間隔 1 秒,顯示一次 extended statistics,共顯示 3 次
iostat -x 1 3

#查看虛擬記憶體使用狀態,每3秒更新一次
vmstat -n 3
參考:
linux性能分析工具sar,iostat,vmstat
Linux的IO性能监控工具iostat详解
linux wa%过高,iostat查看io状况


[效能]
#測試硬碟讀取速度
hdparm -t /dev/sda

#測試硬碟寫入速度(會產生tmp.dd檔,執行完可刪除tmp.dd檔)
time sh -c "dd if=/dev/zero of=tmp.dd bs=1000k count=100; sync"
參考:
Linux 查看硬碟讀取寫入速度


[其他]
#找出底下第一層子資料夾佔的容量
du -h --max-depth=1


[shell 環境變數、變數的scope作用範圍]
例如登入後,進入bash命令列模式下,即產生了一個"當下程序"
用$ bash [bash sript文字檔] 或 $./[可執行的bas hsript文字檔],都在"當下程序"產生了另一個子程序
#設定變數(只對當下程序有效)
$ AA=123
#輸出變數
$ echo $AA
#變數設定成環境變數(只對當下程序和子程序有效)
$ export AA
#輸出PATH環境變數
$ echo $PATH
#用 export 附加路徑到$PATH環境變數(只對當下程序和子程序有效)
$ export PATH=${PATH}:/sbin
參考:What scopes can shell variables have? - Unix & Linux Stack Exchange [They are scoped by process]

沒有留言:

張貼留言