前些天,需要實現乙個需求,用指令碼輪流kill伺服器上的程序,觀察記憶體變化情況,並寫日誌。指令碼邏輯不難,但shell指令碼好久不用,看過書裡的語法都忘得差不多了,中間踩了不少的坑,特此記錄一下,留作後續參考。
指令碼使用了兩個函式,第乙個是去查詢記憶體變化,並不斷寫日誌。用了乙個loop變數來記錄次數,然後就是用echo和》符號不斷寫進日誌檔案,要注意的是shell指令碼中用··(鍵盤1旁邊的那個符號,不是單引號)包含linux命令,用$符號對變數做引用。如果函式需要傳參,則在函式體內,用$1表示第乙個引數,$2表示第二個引數,以此類推。部分**如下:
functionmemoryquery()
該函式的呼叫方法為memoryquery signal
第二個函式是去不斷kill各種程序,程序名稱為傳入引數,並在第二個函式中,完成程序殺除後,去呼叫前乙個記憶體查詢函式。函式**如下:
functionkillprocess()
由於工作需要對使用者提交的資料進行驗證,這是乙個簡單的日期正則驗證例項,有需要了解的同學可參考。
shell中的if語句需要做乙個正則判斷,查了一下語法記錄之。12
3456
datepattern=
"^[0-9]-[0-9]-[0-9]$"
if
[[
"$startdate"
=~ $datepattern ]] && [[ $enddate =~ $datepattern ]];
then
:
else
echo
"date format is invalid!"
exit
;
fi
常用的正規表示式12
if
[[
"$file"
=~
'start'
]]
或
if
[[
"$file"
=~
"start"
]]
例子:123
4567
8#!/usr/bin/ksh
file
=
"10start11.s"
if
[[
"$file"
=~
"start"
]]
then
echo
"success"
else
echo
"failed"
fi
只有bash才支援[[
ksh在test中應該不支援正則,用awk grep sed等工具實現吧12
3456
flag=`
echo
$
file
|
awk
'/start/'
`
if
[
"$flag"
=
""
];
then
echo
"success"
else
echo
"failed"
fi
那些天我踩過的坑
使用knockoutjs時候,千萬不要在迴圈繫結中把dom元素的id寫死。例如在 input file 中 banging event change 時,千萬不要在ko.observablearray 中固定id屬性。如下所示 label for up img class am btn am btn...
shell編寫踩過的坑
1 linux在shell中執行命令並將結果賦值給變數 通過埠號獲取容器名稱 container name docker ps grep port awk f 2 if判斷 if container name then 執行時報 not found 的錯誤,if判斷那塊有個坑,if後面加空格,條件兩...
那些年踩過的CSS坑
1 img 標籤中的alt 與title的區別 title 滑鼠滑過時顯示的文字提示。對seo優化的影響 搜尋引擎對理解是通過alt屬性,所以在alt屬性中包含關鍵字的簡要文字說明,也是頁面優化的一部分。2 padding與margin區別 padding是控制項的內容相對控制項的邊緣的邊距,mar...