shell基础语法以及监控进程不存在重新启动

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基础语法以及监控进程不存在重新启动相关的知识,希望对你有一定的参考价值。

转码

# 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   错误信息不能输出到文本
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;传參数


一定要注意[]空格
#! /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基础语法以及监控进程不存在重新启动的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本监控进程是否存在,不存在则启动实例

用shell脚本监控进程是否存在 不存在则启动的实例

用shell脚本监控进程是否存在 不存在则启动的实例附带if判断详细条件

linux shell脚本监控进程是否存在

Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

VC做一个监控进程,该进程需要定时获取被监控的进程的状态,如果被监控的进程关闭了,就重新启动之