很简单却很实用的强拉脚本
为什么80%的码农都做不了架构师?>>>
#! /bin/bash #####################################################
#name : deamon_crontab.sh
#note : to deamon some process and execuate some action
#date : 2013.01.10
#author : <peterguo@tencent.com>
#################################################### CurFullScript=$(readlink /proc/$$/fd/255)
CurScriptPath=$(dirname $CurFullScript)
CurScriptName=$(basename $CurFullScript)
FullParam=$*
CurPid=$$
IPS=$(/sbin/ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk '{print $2}' | cut -c 6- | awk '{printf("%s ", $0)}')
CurRunLog=$(dirname $CurFullScript)/$(echo $CurScriptName | cut -d . -f1).run.log AnotherProcessNum=$(ps -ef | grep $CurScriptName | grep -v $CurPid | grep -v grep | wc -l)
if [ $AnotherProcessNum -ne 0 ];
then echo "Another process is running, exit " exit 1
fi #If exist, import some basic shell function, here colorEcho
source ~/bin/basicfunction.sh 2>/dev/null
if [ $? -eq 1 ];
then function colorEcho(){ colorFmtTail='\033[m' greenFmtHead='\033[1;32m' echo -e ${greenFmtHead}${2}${colorFmtTail} }
fi function usage(){ colorEcho red "Usage : /path/$(basename $0) checkScript=/data/check.sh failCheckAction=/data/restart.sh rtx=rtxguo" colorEcho red "Note : 1.checkScript[0-succ other-fail] 2.failCheckAction[execuat onlyif checkScript fail] 3.assert script full path from / and exist" echo "" exit 1
} #Reslove the param, format name=value -> $name and check parameter validation
echo $* | grep checkScript | grep failCheckAction 2>/dev/null
[[ $? -ne 0 ]] && {
usage
} eval "valTmp=Temp $*" 2>/dev/null
paramValid=$? [[ "x" == "x$checkScript" ]] && {
paramValid=$(( $paramValid + 1 ))
}
echo ${checkScript}x | grep ^/ >/dev/null 2>&1
paramValid=$(( $paramValid + $? ))
ls ${checkScript} >/dev/null 2>&1
paramValid=$(( $paramValid + $? )) [[ "x" == "x$failCheckAction" ]] && {
paramValid=$(( $paramValid + 1 ))
}
echo ${failCheckAction}x | grep ^/ >/dev/null 2>&1
paramValid=$(( $paramValid + $? ))
ls ${failCheckAction} >/dev/null 2>&1
paramValid=$(( $paramValid + $? )) if [ $# -ne 3 ] || [ $paramValid -ne 0 ];
then usage
fi
chmod +x $checkScript $failCheckAction 2>/dev/null #Enter Execuate path
cd $CurScriptPath #Display the Current Environment Values
echo "[$CurPid][$CurScriptPath][$CurScriptName][$FullParam]" function runScript(){
strCommand=$1
$strCommand
return $?
} colorEcho green "------------------------------check output begin -------------------------------------"
runScript $checkScript
checkRet=$?
colorEcho green "------------------------------check output end ---------------------------------------" if [ $checkRet -eq 0 ];
then colorEcho green "$(basename $0):$LINENO Check PASS [$(date +"%Y-%m-%d %H:%M:%S")]" colorEcho green "$(basename $0):$LINENO Check PASS [$(date +"%Y-%m-%d %H:%M:%S")]" >> $CurRunLog
else colorEcho red "$(basename $0):$LINENO Check FAIL [$(date +"%Y-%m-%d %H:%M:%S")]" colorEcho red "$(basename $0):$LINENO Check FAIL [$(date +"%Y-%m-%d %H:%M:%S")]" >> $CurRunLog colorEcho green "------------------------------failaction output begin -------------------------------------" #execuate action script runScript $failCheckAction actionRet=$? colorEcho green "------------------------------failaction output end ---------------------------------------" [[ $actionRet -ne 0 ]] && { colorEcho red "ERROR: Check Fail and Action Fail" /usr/bin/env sendrtx peterguo $rtx ERROR "[deamon-monitor-error][$IPS:$CurFullScript:$LINENO][@peterguo]" 0 exit 1 colorEcho red "$(basename $0):$LINENO Action FAIL [$(date +"%Y-%m-%d %H:%M:%S")]" colorEcho red "$(basename $0):$LINENO Action FAIL [$(date +"%Y-%m-%d %H:%M:%S")]" >> $CurRunLog } colorEcho red "$(basename $0):$LINENO Action PASS [$(date +"%Y-%m-%d %H:%M:%S")]" colorEcho red "$(basename $0):$LINENO Action PASS [$(date +"%Y-%m-%d %H:%M:%S")]" >> $CurRunLog
fi
转载于:https://my.oschina.net/sanpeterguo/blog/101612
很简单却很实用的强拉脚本相关推荐
- EL表达式中fn函数的强大功能,很简单,很好用,很强大
很简单,很强大,EL表达式中fn函数的强大功能,比如举个例子,要计算某个对象中的某个集合的大小,直接用EL表达式就可以计算出来-- ${fn:length(clazze.course)} 使用fn函数 ...
- 【结果很简单,过程很艰辛】记阿里云Ons消息队列服务.NET接口填坑过程
Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的 ...
- python好学实用吗-都说python很简单 真的很好学么?
Python是一个非常适合初学者入门的编程语言.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易. Python为什么适合零基础小白 1.易于学习:Python有相对较少的关键字,结构简单 ...
- python编程难吗-都说python很简单 真的很好学么?
Python是一个非常适合初学者入门的编程语言.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易. Python为什么适合零基础小白 1.易于学习:Python有相对较少的关键字,结构简单 ...
- 手把手教你在STM32上实现OLED视频播放(很简单也很硬很肝!)
之前发了一个视频,今天就来告诉大家怎么来实现: 小熊派刷儿子骑摩的的抖音视频,流畅度666666 我们这一代的年轻人基本上都很喜欢逛B站,大部分老人都认为我们这些年轻人上B站是为了看动漫.看游戏等等, ...
- 一道很简单却也很容易入坑的java面试题
直接上题:以下代码将打印出 public static void main (String[] args) { String classFile = "com.jd.". repl ...
- ubuntu安装声卡驱动,很简单,很详细,不是我写的。。。
http://nkevin.blog.163.com/blog/static/448194812009428811196/
- 用JavaScript写的俄罗斯方块小游戏(很简单,很详细)
效果 编写外部框架 <!DOCTYPE html> <html><head lang="en"><meta charset="U ...
- ae绘图未指定错误怎么办_【教程】最全的ae表达式教学分享(实用!)表达式其实很简单...
大部分人对ae表达式是望而却之,感觉很难,无从下手,网上的教程也是层次不齐,很难找到好的教程跟着学.于是呢,搜罗全网,整理了一份最全的最实用的ae表达式教学.也算是一个对自己的总结. 下面解决几个问题 ...
最新文章
- python画简单花-Python竟能画这么漂亮的花,帅呆了(代码分享)
- python库--tensorflow--RNN(循环神经网络相关)
- au vst插件_失真效果音频插件
- java 断点续传组件_chunkupload 文件上传断点续传组件(java) - 正式发布
- 对象的多数组表示(不一样的链表-多数组表示链表)
- Sentinel集群流控
- python如何输出结果_如何在python2.7中打印输出结果?
- Linux应用程序在内存中的地址布局
- 三月数据库技术通讯.pdf | Oracle配置DCD避免会话被防火墙强制断开
- 微服务升级_SpringCloud Alibaba工作笔记0010---Gateway配置动态路由
- 关于魔方里的工具修改方法
- Oracle中OEM的启动与关闭
- JavaScript常见设计模式梳理
- Android进阶学习方法总结(内附阿里P7进阶学习全套资料)
- 计算机主机外接电源,电脑DIY必修课,电源接口详解
- eslint 如何关闭检查变量名规范或者大小写检查
- 工作流程管理的重要性
- seo技巧,seo技巧搜行者SEO
- 福利福利!!!!!!!!往这看!!!!!
- MM-DD-RRRR / MM-DD-YYYY 的区别 (Date format)
热门文章
- 初始化触发点击事件_【Vue原理】Event - 源码版 之 自定义事件
- 64位php oracle,64位系统无法加载PHP的oracle扩展问题
- 1080解析 芒果tv_国内主流视频平台解析下载观看
- android 6.0 自定义application,Android6.0之App中的资源管理对象创建
- Vivado 随笔(3) 其他综合属性 dont_touch、fsm_encoding?
- 【 FPGA 】常数( localparam )和参数( parameter )
- 【 MATLAB 】DFS 与 z 变换之间的关系
- 算法笔记1-排序-插入排序
- UVa 164 - String Computer
- Merge into 详细介绍