生产环境shell脚本监控

生产环境shell使用经典案例 #!/bin/bash #针对不同系统,命令不同路径的解决方法 date_com=`/usr/bin/which date` #ifconfig_com=`/usr/bin/which ifconfig` #获取主机名 system_hostname=$(hostname | awk '{print $1}') #过滤lo网卡,但由于某些机器有docker服务,装有docker0的网卡,所以必须过滤docker0网卡的指定IP才行(如其他环境也有也需grep -v单独过滤才可用此脚本)并过滤出IP,再筛选 阅读详情

最近有个需求:定时检测某个目录下的文件个数是否超过n个,若超过则清理日期较早的m-1个文件;由于第一个文件可能被有些进程占用,因此删除日期较早的前m个除去最早的一个。

具体的shell脚本如下:

############################
# author : lijd
# date   :  2021-04-20
############################

#!/bin/bash

main()
{
	while [ 1 ]
	do
		datapath=$(date +%Y)"/"$(date +%m)"/"$(date +%d)"/"
		filepath="/data/sp"$datapath
		file_num=`ls "/data/sp"$datapath -l | grep ".dq" | wc -l`
		
		if [ $file_num -gt 15 ]
		then
			cd $filepath && ls -ltr | grep  ".dq" | awk '{print $9}' | head -n 10 | tail -n 9 | xargs rm -rf
		fi
		
		sleep 60
	done
}

main

主要执行语句:ls -ltr | grep  ".dq" | awk '{print $9}' | head -n 10 | tail -n 9 | xargs rm -rf

定时检测某个进程是否存在,不存在启动。具体的shell脚本如下:

############################
# author : lijd
# date   :  2021-04-20
############################

#!/bin/bash

main()
{
	while [ 1 ]
	do
		process_num=`ps aux | grep hqccgsvc | grep -v grep |wc -l`
		if [ $process_num -eq 0 ]
		then
			cd /root/ccg_cvi/ccg/ && ./hqccgsvc -start
			
			nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
			echo $nowtime hqccgsvc segfault >> /root/ccg_cvi/cvi_ccg_monitor.log
		fi
		
		sleep 60
	done
}

main

部分数据文件可能导致进程读取崩溃,删除异常的数据文件然后重启进程。具体的shell脚本如下: 

############################
# author : lijd
# date   :  2021-04-20
############################
#!/bin/bash

BakErrFile()
{
    datapath=$(date +%Y)"/"$(date +%m)"/"$(date +%d)"/"
    filepath="/data/sp"$datapath
    file_num=`ls "/data/sp"$datapath -l | grep ".dq" | wc -l`
	
    if [ $file_num -gt 5 ]
    then
	cd $filepath && ls -ltr | grep  ".dq" | awk '{print $9}' | head -n 1 | xargs -t -i mv {} {}.bak
    fi
}

main()
{
    while [ 1 ]
    do
	process_ccg_num=`ps aux | grep hqccgsvc | grep -v grep |wc -l`
	if [ $process_ccg_num -eq 0 ]
	then
	    cd /root/ccg_cvi/ccg/ && ./hqccgsvc -start
			
	    nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
	    echo $nowtime hqccgsvc segfault >> /root/ccg_cvi/cvi_ccg_monitor.log
        fi
		
	process_sp_num=`ps aux | grep spsvc_analyze | grep -v grep |wc -l`
	if [ $process_sp_num -eq 0 ]
	then
	    cd /root/ccg_cvi/spanalyze/ && ./spsvc_analyze -start
			
	    nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
	    echo $nowtime spsvc_analyze segfault >> /root/ccg_cvi/cvi_ccg_monitor.log
	fi
		
	process_spa_num=`ps aux | grep spasvc_analyze | grep -v grep |wc -l`
	if [ $process_spa_num -eq 0 ]
	then
	    BakErrFile
	    cd /root/ccg_cvi/spanalyze/ && ./spasvc_analyze -start
			
	    nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
	    echo $nowtime spasvc_analyze segfault >> /root/ccg_cvi/cvi_ccg_monitor.log
	fi
		
	sleep 60
    done
}

main

主要执行语句:ls -ltr | grep  ".dq" | awk '{print $9}' | head -n 1 | xargs -t -i mv {} {}.bak

检查当天对应的文件夹是否存在,如果存在并检查其最新修改时间,如果条件不满足则重启系统。具体的shell脚本如下: 

############################
# author : lijd
# date   :  2024-10-30
############################
#!/bin/bash

main()
{
	systemstarttime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
	echo "$systemstarttime info : adasMonitor start ~~~" >> /usr/local/adasMonitor.log
	while [ 1 ]; do
		# 获取当前时间
		nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
		
		# 获取系统启动时间的时间戳(单位:秒)
		systemuptime=$(printf "%.0f" $(cat /proc/uptime | cut -d" " -f1))
				
		# 获取adas附件服务连接数
		adas_connect_num=`netstat -anp| grep 10011 | grep ESTABLISHED| wc -l`
		
		# 如果系统重启时间超过1天且ADAS连接数超过1才能进入监控
		if [ $systemuptime -gt 86400 ] && [ $adas_connect_num -gt 1 ]; then
		
			datapath=$(date +%Y)"/"$(date +%m)"/"$(date +%d)"/"
			filepath="/data/media/"$datapath
			echo "$nowtime info : filepath : $filepath" >> /usr/local/adasMonitor.log
			
			# 获取当前时间
			current_time=$(date +%s)
			
			if [ -d "$filepath" ]; then
				# 获取文件夹最后修改时间
				last_modified=$(stat -c %Y "$filepath")
				
				# 计算时间差(单位:秒)
				time_diff=$((current_time - last_modified))
				
				echo "$nowtime info : $filepath last modified --> nowtime : $time_diff" >> /usr/local/adasMonitor.log
				
				# 文件夹更新时间超30分钟
				if [ $time_diff -gt 1800 ]; then
					echo "$nowtime error : $filepath last modified --> nowtime : $time_diff" >> /usr/local/adasMonitor.log
					sudo reboot;
				fi
			else
				echo "$nowtime warning : $filepath is not exit!" >> /usr/local/adasMonitor.log
				
				# 获取今天0点0分0秒的时间戳
				midnight_timestamp=$(date -d "today 00:00:00" +%s)
				
				# 计算时间差(单位:秒)
				time_diff=$((current_time - midnight_timestamp))
				
				# 判断时间差是否大于10分钟
				if [ $time_diff -gt 600 ]; then
					echo "$nowtime error : $filepath is not exit and great 600 seconds!" >> /usr/local/adasMonitor.log
					sudo reboot;
				fi
			fi
		fi
		
		sleep 3600
	
	done
}
 
main
避坑指南:新手爬百度图片3个致命错,改完批量保存本地(亲测有效) 新手爬百度图片的核心是“绕开静态HTML,抓准API接口+处理反爬+提取原图”,改完本文提到的3个核心错,就能稳定批量保存高清图片。这套思路可复用在其他图片网站(如必应图片、360图片),只需修改API接口和参数即可。如果想进一步优化,可添加代理IP池、多线程下载(新手不建议,容易触发反爬)、图片去重等功能! 阅读详情

相关推荐

Maxwell个人初学经验及资料分享

前段时间学习了课题组基于Maxwell所建立的模型,因为以前从来没有使用过,只是按照一步一步记忆了操作,但总觉得不熟悉,我想是缺乏对这个软件整体的了解,真正想上手只会这一个模型也没有办法扩展。但是我感觉这些有限元分析软件学习起来应该有一些共性,基于以前对COMSOL学习的一点经验,我就在官网和其他网站找了一些学习资源构成一条基础入门之路,也可能有更好的资源,仅代表个人观点做一下分享。以上就是本人对该软件初步学习的一点理解,跟着这样的操作不到一个星期就能初步的掌握。...

怎么又是萝卜的博客 5631

Shell 中删除文件指定内容

Shell 中删除文件内容的几个用法 1、删除包含指定关键字的行: sed -i '/hello/d' 文件名 2、删除指定行号的行 sed -i '2d' 文件名 3、删首行 sed -i '1d' 文件名 4、删尾行 sed -i '$d' 文件名 5、删空格 sed -i 's/[ ]*//g' 文件名 6、删空行 sed -i '/^$/d' 文件名 ...

m0_59737088的博客 1万+

PID算法(位置式pid算法和增量式pid算法)

PID 算法是闭环控制系统中常用的算法,PID 分别是 Proportion(比例)、Integral(积分)、Differential(微分)的首字母缩写。它是一种结合比例、积分和微分三个环节于一体的闭环控。

m0_57678852的博客 2万+

【shell】sed:对文本查找后进行:替换、删除、插入、更改文本

【shell】sed:对文本查找后进行:替换、删除、插入、更改文本

hiliang521的博客 5203

MuJoCo柔性体仿真实战:从FlexComp建模到自定义模型导入

柔性体仿真是机器人交互研究中不可或缺的一环,MuJoCo作为高精度物理求解器,凭借高效的求解速度与批量并行能力,成为强化学习与软体抓取任务的热门选择。其FlexComp机制将连续材料离散为粒子-约束系统,以较低建模成本模拟布料、软组织等形变行为,相比Gazebo等平台更具实时性与可扩展性。技术价值体现在自定义柔性体建模与导入流程中:通过XML配置网格密度、间距与材料参数,即可生成贴合任务需求的软体垫子或硅胶抓手。在柔性抓取、颗粒抓手、医疗仿真等场景中,该方法能快速构建可训练的环境。围绕环境搭建、FlexCo

weixin_29045585的博客 159

Dify智能体开发:Dify文件上传

相较于聊天文本,文档文件能够承载大量的信息,例如学术报告、法律合同。受限于 LLM 自身仅能够支持文件或图片,难以获取文件内更加丰富的上下文信息,应用的使用者不得不手动复制粘贴大量信息与 LLM 对话,增加了许多不必要的使用成本。

王国平的博客 2590

Shell脚本之文本处理三剑客——sed

sed编辑器时一种,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来。sed编辑器可以根据命令来处理数据流中的数据,这些命令。

weixin_46254171的博客 1361

课题申报新手入门必备指南!利用AI辅助搞定 6大关键部分,高效提升申报成功率(附AI提示词)

以下是我(或团队)与本课题相关的已有基础:【如:承担过的公开课、校本教研活动、教学改革实践、课程建设、区级/校级课题、教学反思积累等】请你完成以下任务:1)判断哪些内容与本课题的研究目标和内容具有直接或间接关联;以下是我当前的研究设想(可能比较笼统):【填写你的研究想法 / 教学困惑 / 初步设想】,请你帮我完成以下任务:1)先判断该设想中隐含的核心研究问题是什么;以下是我目前拟定的研究目标,请你从课题评审视角进行校正:【逐条粘贴你已有的研究目标】,请你帮我:1)判断每个目标是否具体、清晰、可评估;

智能AI让学术科研更容易 917

shell中常用命令

shell中常用命令,如find,for循环遍历等

weixin_42726887的博客 3506

微信小程序启用蓝牙设备特征值变化时的notify功能

注意:这里的serviceUUID、notifyCharacteristicUUID 我会在后面写入数据时做重点说明。isNotifyBLECharacteristic:false, //是否启用蓝牙设备服务特征 notify。二、启用蓝牙设备特征值变化时的notify功能。下一篇 将继续介绍 微信小程序蓝牙设备写入数据。

wsk198726的专栏 1172

linux系统下XDMA驱动的安装与测试问题总结

先看两个常见的问题。一个是驱动安装问题,一个是驱动测试错误;error 512 能识别PCIE的设备,但是The kernel modle installed correctly, but no devices were recognized.

whm128的博客 3802

[Linux] shell文本处理记录 - 查找、增删特定行及附近行

1.grep查找关键字所在行号、查找关键字前后行 2.sed删除指定行及其前后若干行 3.sed在匹配行前或后添加一行,并且保留空格

皮卡丘在充电 5148

YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络

本文记录的是利用颈部结构优化YOLOv11的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 3007

Linux生产环境磁盘监控:80%阈值告警Shell脚本实现

Linux生产环境磁盘监控:80%阈值告警Shell脚本实现

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1100

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql生产环境备份_生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控

作者:迷神在企业的Liunx运维中,经常需要应用到各种shell脚本,比如MySQL数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助Mysql数据库备份脚本(完整备份+异地备份)Mysql数据库备份其实方法有很多,一般非超大量业务,可以使用 mysqldump 。Mysql数据库备份可以采用在MYSQL从库上执行全量备份...

weixin_33375360的博客 219

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

生产环境Shell脚本Ping监控主机是否存活(多种方法)

在网上针对shell脚本ping监控主机是否存活的文档很多,但大多都是ping一次就决定了状态,误报率会很高,为了精确判断,ping三次不通再发告警,只要一次ping通则正常。于是,今天中午抽出点时间总结了下面脚本。脚本功能:通过Ping命令监控主机是否存活,如果ping失败则继续ping,三次不通就认为主机宕机或网络有问题,这时就可以发送邮件告警了。方法1:#!/bin/bash # blog:...

weixin_34212189的博客 478

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控

在企业的Liunx运维中,经常需要应用到各种shell脚本,比如Mysql数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助 Mysql数据库备份脚本(完整备份+异地备份) Mysql数据库备份其实方法有很多,一般非超大量业务,可以使用 mysqldump 。Mysql数据库备份可以采用在MYSQL从库上执行全量备份+...

La victoria的博客 808

生产环境超实用Shell脚本三

本文介绍生产环境中实用的Shell脚本,包括安全加固、数据同步、数据库备份、网站监控和日志分析脚本,提供示例代码,可自动化运维任务,提高系统安全性、数据备份迁移、网站监控及日志分析效率。

我码玄黄的博客 497

shell 同步mysql数据库_生产环境下shell脚本:Mysql数据库备份和Mysql主从同步监控...

作者:迷神Mysql数据库备份脚本(完整备份+异地备份)Mysql数据库备份其实方法有很多,一般非超大量业务,可以使用 mysqldump 。Mysql数据库备份可以采用在MYSQL从库上执行全量备份+增量备份方式。注意,尽力选择服务器使用少的凌晨的时候进行备份,如果有主从的话,需要在从库中备份避免Mysql主库备份的时候锁表造成业务影响。#!/bin/bash set -e #错误时,便停止执行...

weixin_39996750的博客 189

nagios监控流量大小的插件

由于公司需要监控流量的大小以及超过一定的阀值就进行报警,于是在网上搜索了下,发现了这个论坛: http://www.itnms.net/discuz/viewthread.php?tid=767&extra=pageD1&page=1 这个作者做了一个shell脚本,用来监控流量的,感觉不错,就用到了生产环境上了,感谢这位作者. ...

weixin_33912445的博客 103

从入门到生产:运维工程师必备的 Shell 编程完全指南(附 10 个生产级脚本)

Shell脚本编程是运维工程师必备的核心技能。本文系统介绍了Shell编程基础知识和10个生产级实用脚本,涵盖系统监控、日志清理、服务重启、文件备份等常见运维场景。重点讲解了编写生产环境Shell脚本的8大规范:严格模式、绝对路径、变量引号、命令判断、日志记录等。每个脚本都遵循最佳实践,可直接修改使用。掌握这些技巧能显著提升脚本的健壮性和安全性,避免"删库跑路"等生产事故。文章还强调Shell脚本是自动化运维的基础,为学习更高级的DevOps工具打下坚实基础。

Peter_Tang1412的博客 704

shell编程学习之生产环境下的脚本学习

文章目录前言生产环境下的统计类脚本1. 统计设备资产明细脚本2. 统计重要业务程序是否正常可以运行3. 统计机器的IP连接数生产环境下的监控类脚本1. 在Nginx负载均衡器上监控Nginx进程的脚本2. 系统文件打开数检测脚本3. 检测机器的CPU利用率生产环境下的运维开发类脚本1. 控制shell多进程数量的脚本 前言 前两天学习了shell的初级编程,初步掌握了awk,sed, grep三剑客的用法,今天学习几个大佬写出来的脚本,巩固下学到的知识,顺便记录下脚本的内容,方便以后使用查找。 生产环境下的

奔跑的蜗牛的博客 675

【Linux】Shell 脚本监控服务运行状态 自动重启

Shell 脚本监控服务运行状态与自动重启方案 本文介绍三种Shell脚本方案监控Java服务运行状态并实现自动重启: 基础方案:通过ps和grep检测进程是否存在,但可能误判进程状态 端口检测方案:使用lsof检查服务端口是否监听,适合Web服务 健康检查方案:通过curl测试健康接口(如/actuator/health),最精准可靠 文章还提供了: 完整的Shell脚本示例 Java项目中启用Actuator的方法 通过crontab设置定时监控 防止无限重启的冷却机制 可视化流程图展示监控逻辑 这套方

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Shell脚本批处理启动liunx中mysql+tomcat+nginx+redis服务

1.简单粗暴点将代码粘贴出来,但是在公司有的项目名该隐藏的就隐藏了,不懂可以看注释或者询问博主。 #基本这种情况,我写了个监控shell脚本的解决方案,不管以上出现那种情况,都自动恢复Nginx、mysql、tomcat、redis的服务.该脚本在生产环境上运行正常 #!/bin/bash # # filename: startBatch.sh # 功能:监控 nginx、my...

点点的博客 1627
上一篇: C++ STL学习总结
下一篇: ettercap内网DNS劫持实验
码农诗人
博客等级 码龄11年 987粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值