当前位置:网站首页>如何不耍流氓的做运维之-SHELL脚本
如何不耍流氓的做运维之-SHELL脚本
2022-08-03 05:10:00 【lhorse003】
2 个评论
写下我自己的模块函数,直接复制可用:
举一个例子:
#!/bin/bash
#***************************************************************************
# *
# * @file:pid_run.sh
# * @author:Luolired
# * @date:2016-01-05 16:26
# * @version 0.5
# * @description: 节点提升为master调用的脚本
# * 1.脚本标准化 notify_master "/etc/keepalived/scripts/pid_run.sh"
# * @Copyright (c) 007ka all right reserved
# * @updatelog:
# * 1.更新程序标准化逻辑性
# * 2.优化日志的输出
# * 3.增加同步锁状态标识,用以区分同步开启
# * 4.增加Keepalived主备切换功能开启锁,用以初始化启动抢占操作多开或Stop原有业务
#**************************************************************************/
export LANG=zh_CN.GBK
1.4.1 结果输出函数模块
### Print error messges eg: _err "This is error"
function _err()
{
#echo -e "\033[1;31m[ERROR] [email protected]\033[0m" >&2
echo -e "\033[1;31m[ERROR] [email protected]\033[0m"
}
### Print notice messages eg: _info "This is Info"
function _info()
{
#echo -e "\033[1;32m[Info] [email protected]\033[0m" >&2
echo -e "\033[1;32m[Info] [email protected]\033[0m"
}
1.4.2 日志输出函数模块
###LOG_PATH
###程序运行all日志输出路径
g_s_LOG_PATH=/var/applog/${G_LOG_FILE}
mkdir -p $g_s_LOG_PATH
g_s_LOGDATE=`date +"%F"`
#执行脚本生成的日志
g_s_LOGFILE="${g_s_LOG_PATH}/pid_run.${g_s_LOGDATE}.log"
### LOG to file eg:g_fn_LOG "Test"
g_fn_LOG()
{
s_Ddate=`date +"%F %H:%M:%S"`
echo "[$s_Ddate] $*" >> $g_s_LOGFILE
}
1.4.3 flock锁函数模块
### Add flock Avoid more open program
function _lock()
{
flock -n 3
[ $? -eq 1 ] && { _err "Fault $(basename $0) is Already in Runing,Plesase Waiting....^_^ GoodBye!!!"; exit; }
_info "$(basename $0) Current Pid is:$$"
_log "$(basename $0) Current Pid is:$$"
sleep 50
} 3<>/tmp/$(basename $0 | awk -F. 'BEGIN{OFS="."};{NF=NF-1;print $0}').lock
function main()
{
_lock
}
#main
main
举一个例子:
#!/bin/bash
#***************************************************************************
# *
# * @file:pid_run.sh
# * @author:Luolired
# * @date:2016-01-05 16:26
# * @version 0.5
# * @description: 节点提升为master调用的脚本
# * 1.脚本标准化 notify_master "/etc/keepalived/scripts/pid_run.sh"
# * @Copyright (c) 007ka all right reserved
# * @updatelog:
# * 1.更新程序标准化逻辑性
# * 2.优化日志的输出
# * 3.增加同步锁状态标识,用以区分同步开启
# * 4.增加Keepalived主备切换功能开启锁,用以初始化启动抢占操作多开或Stop原有业务
#**************************************************************************/
export LANG=zh_CN.GBK
1.4.1 结果输出函数模块
### Print error messges eg: _err "This is error"
function _err()
{
#echo -e "\033[1;31m[ERROR] [email protected]\033[0m" >&2
echo -e "\033[1;31m[ERROR] [email protected]\033[0m"
}
### Print notice messages eg: _info "This is Info"
function _info()
{
#echo -e "\033[1;32m[Info] [email protected]\033[0m" >&2
echo -e "\033[1;32m[Info] [email protected]\033[0m"
}
1.4.2 日志输出函数模块
###LOG_PATH
###程序运行all日志输出路径
g_s_LOG_PATH=/var/applog/${G_LOG_FILE}
mkdir -p $g_s_LOG_PATH
g_s_LOGDATE=`date +"%F"`
#执行脚本生成的日志
g_s_LOGFILE="${g_s_LOG_PATH}/pid_run.${g_s_LOGDATE}.log"
### LOG to file eg:g_fn_LOG "Test"
g_fn_LOG()
{
s_Ddate=`date +"%F %H:%M:%S"`
echo "[$s_Ddate] $*" >> $g_s_LOGFILE
}
1.4.3 flock锁函数模块
### Add flock Avoid more open program
function _lock()
{
flock -n 3
[ $? -eq 1 ] && { _err "Fault $(basename $0) is Already in Runing,Plesase Waiting....^_^ GoodBye!!!"; exit; }
_info "$(basename $0) Current Pid is:$$"
_log "$(basename $0) Current Pid is:$$"
sleep 50
} 3<>/tmp/$(basename $0 | awk -F. 'BEGIN{OFS="."};{NF=NF-1;print $0}').lock
function main()
{
_lock
}
#main
main
边栏推荐
猜你喜欢
随机推荐
typescript45-接口之间的兼容性
WinForm的控件二次开发
Jmeter 模拟多用户登录的两种方法
1059 C语言竞赛 (20 分)(C语言)
typescript40-class类的保护修饰符
Windows 安装PostgreSQL
Redis6学习笔记
High availability, two locations and three centers
建造者模式(Builder Pattern)
GIS数据漫谈(六)— 投影坐标系统
Install PostgreSQL on Windows
rosbag工具plotjuggler无法打开rosbag的问题
用户密码验证
User password verification
Build your own web page on the Raspberry Pi (2)
Practical application of WebSocket
1079 延迟的回文数 (20 分)
FileZilla 搭建ftp服务器
3. 无重复字符的最长子串
力扣561. 数组拆分