[size=x-large]shell[/size]
[*] case語法
case "$1" in
start)
start;;
stop)
stop;;
*)usage;;
esac
[*] 檢視系統32位還是64位
$uname -m
x86_64
$arch
x86_64
[size=x-large]grep[/size]
[*] grep命令hang住的問題
[*] 提取正則匹配的字段
# 檔案內容
$ cat gc.log
27.427: [gc [psyounggen: 575772k->143524k(611072k)] 898332k->529514k(1079168k), 0.4843210 secs] [times: user=0.87 sys=0.09, real=0.48 secs]
27.911: [full gc [psyounggen: 143524k->0k(611072k)] [psoldgen: 385990k->415894k(586240k)] 529514k->415894k(1197312k) [pspermgen: 18180k->18180k(29824k)], 1.5263920 secs] [times: user=1.50 sys=0.02, real=1.53 secs]
# 提取 real=xx secs 中間的 xx,也就是gc的時間
$ grep -po "(?<=real\=).* (?=secs)" gc.log
0.48
1.53
[*] 檢視log
cat x.log|grep -eo "[a-za-z]*exception" | sort | uniq -c | sort -nr
[size=x-large]sed[/size]
[*] 替換檔案中的行
$ sed -i "s/.*<\/groups>/cat<\/groups>/g" pom.xml
[*] 新增行
# /a 表示在正則匹配結果行的下一行插入
sed -i '/\[mysqld\]/a\default-character-set=utf8' /etc/my.cnf
# /i 表示在正則匹配結果行的前一行插入
sed -i '/\[mysqld\]/i\default-character-set=utf8' /etc/my.cnf
[size=x-large]awk[/size]
[*] 基本的awk命令
$ awk 'begin end {}' a.txt
# begin後面的{} 表示在awk命令最開始執行
# fs 表示分隔符
# 中間的{} 表示對每一行的處理
# end後面的{} 表示在最後執行
[*] 分析gc日誌,提取時間
# 如果第2列 gc,提取第6列資料相加,最後輸出
awk 'begin {} end ' gc.log
shell指令碼記錄
shell學習 shell 指令碼格式 檔案以.sh結尾,檔案頂行輸入 bin bash 變數 變數名 變數值 獲取變數值 變數名 環境變數 使用export 變數名 這樣在任何位置都可以獲取到變數值 shell 預設賦值變數都是字串 0 shell檔名 n 第n個變數 變數數量 所有變數 所有變數...
Shell 指令碼學習記錄(一)
一 shell 學習shell指令碼之前,我們有必要先來認識認識什麼叫shell?談到這個問題,我們首先來回憶一下計算機自底向上的體系,最下層是硬體,上面是驅動,上面是作業系統,在上面是shell,所謂的外殼。shell其實是使用者和作業系統進行人機互動的乙個inte ce。主要通過命令列來使系統完...
shell指令碼命令記錄
linux 檔案基本屬性 獲取當前指令碼檔案的目錄 rsync同步 用於指令碼除錯,在liunx指令碼中可用set x就可有詳細的日誌輸出.可免去echo輸出 如下例子 bin bash set x yourname hello world 輸出結果 yourname hello world 執行每...