shell基礎語法以及監控進程不存在重新啟動
阿新 • • 發佈:2017-08-20
linux 進程 tail shell detail span () 使用 run 標準輸入
語法
變量
var="111"
echo $var
echo ${var}
運算
no1=4;
no2=5;
let result=no1+no2
echo $result;
自增自降低
let no++
let no--
[]和let相似
result=$[ no1 + no2 ]
result=$[ $no1 + 5 ]
也能夠使用(()),但使用(())時。變量名前須要加上$
result=$(( $no1 + 5 ))
expr也能夠用於基本算術操作
result=`expr 3+4`
result=$(expr $no1 + 5)
以上不支持浮點
bc能夠浮點
echo "4*0.56" |bc 輸出2.24
文件描寫敘述符
0 1 2 標準輸入 輸出 標準錯誤
重定向到文本
echo "123" > temp.txt
追加
echo "123" >> temp.txt
查看文件內容
cat temp.txt
cat 1.txt 2.txt 多個內容
ls +
非法參數輸出錯誤信息stderr
命令錯誤並退回 返回非0的退出狀態
成功完畢返回數字0
退出狀態能夠從特殊變量$?獲得,在命令執行完後立馬執行echo $?就能夠打印退出狀態
ls + >out.txt 錯誤信息不能輸出到文本
ls + 2>out.txt 錯誤信息能輸出到文本
stderr和stdout各自
cmd 2>stderr.txt 1>stdout.txt
stderr轉換為stdout
cmd 2>&1 out.txt
或者
cmd &> out.txt
stderr重定向到
/dev/null
讀取日期
date
函數定義
function fname()
{
return 0;返回值
}
函數調用
$fname;
$fname arg1 arg2;傳參數
一定要註意[]空格
轉碼
# dos2unix ./test.sh
權限
# chmod a+x ./test.sh語法
變量
var="111"
echo $var
echo ${var}
運算
no1=4;
no2=5;
let result=no1+no2
echo $result;
自增自降低
let no++
let no--
[]和let相似
result=$[ no1 + no2 ]
result=$[ $no1 + 5 ]
也能夠使用(()),但使用(())時。變量名前須要加上$
result=$(( $no1 + 5 ))
expr也能夠用於基本算術操作
result=`expr 3+4`
result=$(expr $no1 + 5)
bc能夠浮點
echo "4*0.56" |bc 輸出2.24
文件描寫敘述符
0 1 2 標準輸入 輸出 標準錯誤
重定向到文本
echo "123" > temp.txt
追加
echo "123" >> temp.txt
查看文件內容
cat temp.txt
cat 1.txt 2.txt 多個內容
ls +
非法參數輸出錯誤信息stderr
命令錯誤並退回 返回非0的退出狀態
成功完畢返回數字0
退出狀態能夠從特殊變量$?獲得,在命令執行完後立馬執行echo $?就能夠打印退出狀態
ls + >out.txt 錯誤信息不能輸出到文本
stderr和stdout各自
cmd 2>stderr.txt 1>stdout.txt
stderr轉換為stdout
cmd 2>&1 out.txt
或者
cmd &> out.txt
stderr重定向到
/dev/null
讀取日期
date
函數定義
function fname()
{
return 0;返回值
}
函數調用
$fname;
$fname arg1 arg2;傳參數
一定要註意[]空格
#! /bin/sh a=4; b=5; if [ "$a" = "$b" ]; then echo "1111" #####
#! /bin/sh a=4; b=5; if [ "$a" -eq "$b" ] then echo "yyyyyyyyyy" else echo "nnnnn" fi #####
#! /bin/sh ps aux|grep redis-stat | grep -v grep| wc -l a=11 b=11 if [ $a -eq $b ] then echo "start process....." else echo "runing....." fi #####
註意<之類須要(())
以下這個監控redis進程不存在就重新啟動
#! /bin/sh p="redis-server" proc_num() { num=`ps aux|grep $p | grep -v grep| wc -l` return $num } proc_num n=$?if (( "$n" < 1 )) then echo $n echo "start redis-server process....." else echo $n echo "redis-server runing ok." fi #####
crontab -e每分鐘監控一次
*/1 * * * * /redis.sh
參考:《Linux Shell腳本攻略(第2版)》
Shell中字符串、數值的比較
linux 進程監控和自己主動重新啟動的簡單實現
shell基礎語法以及監控進程不存在重新啟動