Linux中判断某个Docker容器服务的内存是否超过临界值,比如到达10G,则在凌晨4点执行定时任务执行重新构建命令

监测NAME是blade-jiangxinzhougarden的服务,如果内存(MEM USAGE)超过10G则在凌晨4点执行重新构建命令

在这里插入图片描述

1.编写脚本文件restart_jxz.sh

#!/bin/bash# 设置要监控的容器名称或服务名称(替换成你的服务名)
SERVICE_NAME="blade-jiangxinzhougarden"# 获取服务的内存使用情况,这里假设服务对应的容器名称为 $SERVICE_NAME  将内存使用量转换为 GB
MEMORY_USAGE=$(docker stats --no-stream --format "{{.MemUsage}}" $SERVICE_NAME | awk '{ memory = $1; sub(/GiB/, "", memory); print memory }')# 设置内存阈值 不超过10G
CRITICAL_MEMORY=10# 判断内存使用是否超过阈值
if (( $(echo "$MEMORY_USAGE > $CRITICAL_MEMORY" | bc -l) )); thenecho "内存使用超过临界值,当前内存使用量为: ${MEMORY_USAGE}GB"echo "执行重启命令..."# 在这里添加重启服务的命令,比如 Docker 容器重启命令# 重启服务的命令docker rm -f blade-jiangxinzhougarden# 延迟15秒sleep 15docker rmi yutu/blade-jiangxinzhougarden:2.8.2# 延迟15秒sleep 15docker-compose up -d blade-jiangxinzhougarden# 等待服务启动echo "等待服务启动..."#  以下是判断服务器是否已经成功启动的while循环代码# (注意:如果你没有需求则可以把以下的while代码删除)#  避免出现意外导致服务启动不起来,处于死循环状态#  一旦出现死循环就会给服务器资源造成负担while true; do# 判断服务器是否已经成功启动if docker ps | grep blade-jiangxinzhougarden; thenecho "服务已启动,继续后续操作"# 跳出while循环breakelseecho "服务尚未完全启动,继续等待..."sleep 10fidoneelseecho "内存使用正常,当前内存使用量为: ${MEMORY_USAGE}GB"
fi

2.授予执行权限

确保脚本文件有执行权限,可以在终端通过运行 chmod +x monitor_script.sh 给予执行权限。

chmod +x restart_jxz.sh

或者直接给予777权限,这个命令将会设置指定的文件为所有用户可读、可写、可执行。尽量避免过度赋予文件权限,因为这可能会造成安全风险。

chmod 777 restart_jxz.sh

3.配置定时任务

在终端执行crontab -e命令进入配置定时任务命令

crontab -e

进入后按下键盘的Ins键进入编辑模式,把以下内容复制进去即可在凌晨4点执行。

0 4 * * * /home/data/srv/restart_jxz.sh >> /home/data/srv/restart_jxz.log 2>&1

请替换 /home/data/srv/restart_jxz.sh 为实际脚本文件的路径,将脚本执行结果输出到指定的日志文件
/home/data/srv/restart_jxz.log 中。

在这里插入图片描述

编辑完成后按下键盘的Esc键,再按下Shift+;组合键,出现冒号后输入wq回车即可保存退出。

也记得给日志文件授予写入的权限

常见问题

如果出现以下报错,可能是因为脚本文件中包含了 Windows 下的换行符(\r\n)而不是 Unix 下的换行符(\n)导致的。这种情况下,系统会将 \r 当作命令的一部分,导致解释器无法找到对应的文件或目录。

/bin/sh: /home/data/srv/restart_jxz.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

要解决这个问题,你可以使用 dos2unix 命令将文件转换为 Unix 格式。在终端中执行以下命令:

dos2unix /home/data/srv/restart_jxz.sh

这会将 restart_jxz.sh 文件转换为 Unix 格式,去除 Windows 换行符。然后再次运行定时任务,看看是否能够成功执行脚本。

如果你的系统没有安装 dos2unix 命令,你可以尝试使用 sed 命令来替换换行符。你可以执行以下命令:

sed -i 's/\r//' /home/data/srv/restart_jxz.sh

这样也可以将文件中的 Windows 换行符替换为 Unix 换行符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正信晟锦:老板拖工资怎么说比较合适

在职场中,老板拖欠工资是一个敏感而棘手的问题。面对这一情况,员工应保持冷静与专业,采取合适的方式表达自己的合理关切,并寻求问题的解决。 私下与老板进行沟通。选择一个适当的时机,以尊重和理解的态度开场&#xff…

Leetcode 3084. Count Substrings Starting and Ending with Given Character

Leetcode 3084. Count Substrings Starting and Ending with Given Character 1. 解题思路2. 代码实现 题目链接:3084. Count Substrings Starting and Ending with Given Character 1. 解题思路 这一题其实挺简单的,只要看一下目标的character在stri…

数据库系统概论 第五版(王珊) 数据库课程实验

数据库系统概论 第五版(王珊) 数据库课程实验 定义基本表 8个基本表建表sql如下: CREATE TABLE Region(/*地区表*/regionkey INTEGER PRIMARY KEY ,name CHAR(25),COMMENT VARCHAR(152) );CREATE TABLE Nation (/*国家表*/nationkey integer PRIMARY KEY ,name c…

每日一题——LeetCode1694.重新格式化电话号码

方法一 模拟: 首先去除number里面的破折号和空格,取出纯数字组成的字符串str。 对于str每三个数分成一组,加一个破折号,当str的长度小于等于4时再分情况讨论,如果等于4就分为22形式,如果小于4&#xff0c…

Springboot 整合Mybatis 实现增删改查(二)

续上篇:Springboot整合Mybatis的详细案例图解分析-CSDN博客 mapper层(StudentMapper) //通过id查询student方法Student searchStudentById(int id);//通过id删除student方法int deleteStudentById(int id);//通过id增加student方法int inser…

基于springboot+vue的乡政府管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Fay数字人<助理版>具体编译步骤,手把手带你避坑 | 多图预警 ( python 3.11 编译环境 超详细教程 )

Fay数字人<助理版>具体编译步骤 系列教程环境描述一、搭建编译环境1、下载anaconda2、下载Fay(带货版)源码 二、Fay编译参数配置&#xff08;手把手教学&#xff09;(一)Fay具体编译步骤(二)配置 aliyun key(三)配置 aliyun 智能语音交互app(四)修改并配置自己的FAY数字…

解决后端传给前端的日期问题

解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式化 但这种方式&#xff0c;需要在每个时间属性上都要加上该注解&#xff0c;使用较麻烦&#xff0c;不能全局处理。 2). 方式二&#xff08;推荐 ) 在WebMvcConfiguration中扩展SpringMVC的消息转…

canal问题记录:something goes wrong when doing authentication: auth failed for user:

一、问题描述 部署了1.15服务端 canal.deployer-1.1.5 用于监听mysql的binlog日志&#xff0c;同时在项目中集成了canal client,用于在监听到指定数据表变化时自定义写入es。 服务端配置&#xff1a; 客户端配置&#xff1a; public void run() {// 创建链接CanalConnector …

全流程ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

Trustzone和Tee的基本概念区分

Trustzone和Tee的基本概念区分 TrustZone:可信 区域,TrustZone是ARM处理器提供的一种特性或安全方案,而TEE是一个更广泛的概念,包含了TrustZone以及其他可以实现类似功能的解决方案。 ARM公司于2006年提出了一种硬件虚拟化技术TrustZone及其相关硬件实现方案。TrustZone即…

P3392 涂国旗 python解法

P3392 涂国旗 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) n,mmap(int,input().split()) arr[] ks[] ans100000000 #因为要比较最小值&#xff0c;这里由于数据较小可以设置这么大&#xff0c;数据要再大的话就设置最大常量 #前i行涂蓝成本b[i],涂红成本r[i],涂白成本w[i],…

代码随想录阅读笔记-哈希表【四数之和】

题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target&#xff0c;判断 nums 中是否存在四个元素 a&#xff0c;b&#xff0c;c 和 d &#xff0c;使得 a b c d 的值与 target 相等&#xff1f;找出所有满足条件且不重复的四元组。 注意&#xff1a;答案中不可以包…

Linux-find命令

在Linux下&#xff0c;要查找文件&#xff0c;可以使用find命令。find命令能够在指定的目录及其子目录中查找文件&#xff0c;并且支持使用多种条件进行过滤。 以下是find命令的基本用法&#xff1a; find <路径> <选项> <表达式> 常用选项包括&#xff1a;…

网络协议与层次划分:探索计算机网络体系结构

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Vulnhub - Symfonos

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Symfonos 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/symfonos-1,322/ 0x01 信息收集 …

鼎阳SDS6204示波器EPICS IOC的搭建

三年前曾写过这个文&#xff1a; 鼎阳SDS6204示波器的EPICS IOC调试 文章里有EPICS网站设备IOC搭建的指南&#xff0c;具体搭建IOC的步骤就没详细写了&#xff0c;几年后重新搭建时发现还是费了些力气才搭建起来&#xff0c;因此写此文记录下手把手的过程方便自己以及EPICS的初…

【论文阅读】MSGNet:学习多变量时间序列预测中的多尺度间序列相关性

MSGNet&#xff1a;学习多变量时间序列预测中的多尺度间序列相关性 文献介绍摘要总体介绍背景及当前面临的问题现有解决方案及其局限性本文的解决方案及其贡献 背景知识的相关工作背景知识问题表述&#xff1a; Method论文主要工作1.输入嵌入和剩余连接 (Input Embedding and R…

windows的mysql8.0.24版本mysql初始化

在Windows下进行MySQL 8.0.24版本的数据库初始化&#xff0c;可以按照以下步骤进行&#xff1a; 下载MySQL 8.0.24的安装包&#xff0c;解压到指定目录。 打开命令行终端&#xff0c;以管理员身份运行&#xff0c;进入MySQL安装目录的bin文件夹。 执行以下命令进行初始化&#…

工业AMR机器人如何实现规模化的柔性生产

在当下高度复杂的工业生产环境中&#xff0c;机器人如何实现规模化的柔性生产&#xff0c;已成为业界关注的焦点。特别是在追求高效率、高质量的生产过程中&#xff0c;团队协作的重要性愈发凸显。富唯智能一体化AMR控制系统&#xff0c;作为机器人的核心指挥部&#xff0c;犹如…