当前位置: 首页 > article >正文

定时清理流媒体服务器录像自动化bash脚本

定时清理流媒体服务器保存录像文件夹

首先创建一个文件,解除读写权限

touch  rm_videos.sh
chmod 777 rm_videos.sh

将内容复制进去,将对应文件夹等需要修改的内容,根据自己的实际需求进行修改

#!/bin/bash# 设置目标目录(修改为你的实际路径)
TARGET_DIR="/xx/xx/xxx"# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; thenecho "目标目录不存在: $TARGET_DIR"exit 1
fi# 进入目标目录
cd "$TARGET_DIR" || exit 1# 获取所有子目录并按创建时间排序(最早在前)
# 注意:不同系统 stat 的字段可能不同,此处假设使用 Linux 的 %W(出生时间)
# 如果你的系统不支持 birth time,可以改用 mtime(修改时间)
FOLDERS=($(find . -maxdepth 1 -type d -not -path . -printf "%W %p\n" | sort -n | cut -d' ' -f2-))# 检查是否超过5个文件夹
if [ "${#FOLDERS[@]}" -gt 5 ]; then  #此处5为保存的文件夹数量也就是对应的保存视频天数# 取最早创建的文件夹(第一个元素)OLDEST_FOLDER="${FOLDERS[0]}"echo "正在清理文件夹: $OLDEST_FOLDER"# 删除最早文件夹中的所有内容,包括文件夹rm -r "$OLDEST_FOLDER"echo "$OLDEST_FOLDER 清理完成。" >> /xx/xx/del.log  #将完成内容输出到指定的log文件内 >>为追加
elseecho "文件夹数量未超过5个,无需清理。" >> /xx/xx/del.log #将完成内容输出到指定的log文件内
fi

写完之后,可以运行脚本试一下有没有效果

bash rm_videos.sh

如果没有问题,我们将该脚本写入系统定时任务

首先确认定时任务模块是否开启,如下图active为active即为在运行

 sudo service cron status

在这里插入图片描述

# 如果没有运行可以运行下列指令开启
sudo service cron start
# 输入下面命令,进入定时任务修改文件。注意:第一次进入时,会选择编辑软件,选择vim即可
crontab –e

在这里插入图片描述
我们可以看到图中有详细的案例教程

从前到后分别是

 m      h     dom(day of month)    mon(month of year)  dow(day of week)  command
分钟   小时   每月的第几天            每年的第几个月      每周的第几天      具体指令
#我们再次设置每天凌晨一点自动运行脚本
0 1 * * * /xx/xx/rm_videos.sh
#我们可以先设置每分钟执行,查看脚本是否成功执行
* * * * * /xx/xx/rm_videos.sh

去查看创建的del.log日志文件是否有内容(del.log输出内容在sh脚本中有体现,可以修改为自己想要的内容)

如果是多个文件夹内视频文件夹删除,使用下面代码

#!/bin/bash# 设置根目录(修改为你自己的路径)
ROOT_DIR="/xx/xx/xx"# 检查根目录是否存在
if [ ! -d "$ROOT_DIR" ]; thenecho "根目录不存在: $ROOT_DIR"exit 1
fi# 进入根目录
cd "$ROOT_DIR" || exit 1# 遍历根目录下的所有子目录(只处理文件夹)
for SUB_DIR in */; do# 去除末尾斜杠DIR_NAME="${SUB_DIR%/}"echo "正在处理目录: $DIR_NAME"# 获取该目录下所有子目录并按创建时间排序(最早在前)# 注意:不同系统 stat 的字段可能不同,请根据需要调整 %W / %YFOLDERS=($(find "$DIR_NAME" -maxdepth 1 -mindepth 1 -type d -printf "%W %p\n" | sort -n | cut -d' ' -f2-))COUNT=${#FOLDERS[@]}echo "找到 $COUNT 个子文件夹。"if (( COUNT > 5 )); thenOLDEST_FOLDER="${FOLDERS[0]}"echo "正在清理最早文件夹: $OLDEST_FOLDER"# 删除该文件夹内所有内容rm -r "$OLDEST_FOLDER"echo "已清理: $OLDEST_FOLDER" >> /xxx/xxx/del.logelseecho "文件夹数量未超过5个,无需清理。" >> /xxx/xxx/del.logfiecho "-----------------------------"
done

相关文章:

定时清理流媒体服务器录像自动化bash脚本

定时清理流媒体服务器保存录像文件夹 首先创建一个文件,解除读写权限 touch rm_videos.sh chmod 777 rm_videos.sh将内容复制进去,将对应文件夹等需要修改的内容,根据自己的实际需求进行修改 #!/bin/bash# 设置目标目录(修改为你的实际路…...

Logi鼠标切换桌面失效

Mac上习惯了滑屏切换桌面,所以Logi鼠标也定制了切换桌面的动作,有一天发现这个动作失效了,且只有切换桌面的动作失效。 发现Logi Options出现了这个提示,如图所示(具体原因未知,已配置不自动更新版本&…...

Go语言之匿名字段与组合 -《Go语言实战指南》

Go 没有传统的面向对象继承机制,但它通过“匿名字段(embedding)”实现了类似继承的组合方式,使得一个类型可以“继承”另一个类型的字段和方法。 一、什么是匿名字段 匿名字段就是在结构体中嵌套一个类型而不显式命名字段名。该字…...

Linux 进阶命令篇

一、Linux 系统软件安装命令 (一)Ubuntu 系统(基于 Debian) apt :是 Ubuntu 系统中常用的包管理工具,可以自动处理软件依赖关系。 安装命令格式 :sudo apt install 软件名 示例 :…...

OpenCV CUDA模块图像处理------颜色空间处理之拜耳模式去马赛克函数demosaicing()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于在 GPU 上执行拜耳图像(Bayer Pattern)的去马赛克操作(Demosaicing),将单通…...

2025年全国青少年信息素养大赛复赛C++集训(15):因子问题(题目及解析)

2025年全国青少年信息素养大赛复赛C集训(15):因子问题(题目及解析) 题目描述 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 时间限制:10000 内存限制&…...

如何通过仿真软件优化丝杆升降机设计

通过仿真软件优化丝杆升降机设计可从多维度入手,以下为具体方法和分析: 一、基于有限元分析的结构优化 材料优化:通过ANSYS等软件建立三维模型,施加实际工况载荷(如轴向力、径向力、扭矩),计算…...

Vue3进阶教程:1.初次了解vue

1.初次了解vue vue文件目录和各个文件在这里不做介绍 此课程对针对有点vue基础的同学,或者看过我上部分vue的教程 与之前我的Vue教程不同的是,写法和内容有区别 真正的了解Vue3 1.创建vue组件 1.npm create vuelatest 2.取名 3.TS要选上 4.其他先不选 5…...

WordPress免费网站模板下载

大背景图免费wordpress建站模板 这个wordpress模板设计以简约和专业为主题,旨在为用户提供清晰、直观的浏览体验。以下是对其风格、布局和设计理念的详细介绍: 风格 简约现代:整体设计采用简约风格,使用了大量的白色和灰色调&am…...

【深度学习新浪潮】以图搜地点是如何实现的?(含大模型方案)

1. 以图搜地点的实现方式有哪些? 扫描手机照片中的截图并识别出位置信息,主要有以下几种实现方式: 通过照片元数据获取: 原理:现代智能手机拍摄的照片通常会包含Exif(Exchangeable Image File)元数据。Exif中除了有像素信息之外,还包含了光圈、快门、白平衡、ISO、焦距…...

element的el-table翻页选中功能

el-table翻页选中功能 row-key"enterpriseWorkerId" selection-change"handleSelectionChange"<el-table-column type"selection" :reserve-selection"true" width"55"></el-table-column>stuMultipleList: []…...

Python打卡训练营学习记录Day38

知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 作业&#xff1a;了解下cifar数据集&#xff0c;尝试获取其中一张图片 import torch import torch.nn as nn import torch.opt…...

deepseek开源资料汇总

参考&#xff1a;DeepSeek“开源周”收官&#xff0c;连续五天到底都发布了什么? 目录 一、首日开源-FlashMLA 二、Day2 DeepEP 三、Day3 DeepGEMM 四、Day4 DualPipe & EPLB 五、Day5 3FS & Smallpond 总结 一、首日开源-FlashMLA 多头部潜在注意力机制&#x…...

CollUtil详解

CollUtil 是 Hutool 工具库中的一个工具类&#xff0c;专门用于操作集合&#xff08;Collection&#xff09;。它提供了许多静态方法&#xff0c;可以简化对集合的常见操作&#xff0c;例如判断集合是否为空、合并集合、过滤集合等。 以下是关于 CollUtil 的详细介绍和常用方法…...

Elasticsearch的运维

Elasticsearch 运维工作详解&#xff1a;从基础保障到性能优化 Elasticsearch&#xff08;简称 ES&#xff09;作为分布式搜索和分析引擎&#xff0c;其运维工作需要兼顾集群稳定性、性能效率及数据安全。以下从核心运维模块展开说明&#xff0c;结合实践场景提供可落地的方案…...

Linux编辑器——vim的使用

vim是一款多模式的编辑器。 基本操作&#xff1a;vim打开默认是命令模式&#xff0c;也就是输入命令然后系统执行指令&#xff0c;想要写代码&#xff0c;只需输入字母i&#xff0c;就进入插入模式&#xff0c;写完代码想要退出&#xff0c;按一下Esc&#xff0c;退回到命令模…...

线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类

乳腺癌数据是sklearn中自带的数据集&#xff0c;需要通过相关特征对是否患有乳腺癌进行分类。 数据清洗与建模 首先加载相关库和相关数据 from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression import numpy as np import…...

Jenkins分配对应项目权限与用户管理

在日常开发过程中经常会出现用户和权限管理问题&#xff0c;没有配置trigger时&#xff0c;通常需要我们手动构建&#xff0c;但此时前端和后端的朋友没有build权限&#xff0c;导致每次dev环境测试都需要麻烦我们手动去构建&#xff0c;消息传达不及时则会降低开发效率。 现有…...

Mate桌面环境系统与终端模拟器参数配置

说明&#xff1a;   MATE桌面环境在使用中会优化一些参数配置&#xff0c;例如&#xff1a;电源选项、屏幕配置、字体配置、终端模拟器&#xff08;Mate Terminal&#xff09;配置等等。   通常工程师会根据自己喜好调整一些参数&#xff0c;修改后参数的保存位置在/home/u…...

fabric 是一个开源框架,用于使用 AI 增强人类能力。它提供了一个模块化框架,用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题

​一、软件介绍 文末提供程序和源码下载 fabric 是一个开源框架&#xff0c;用于使用 AI 增强人类能力。它提供了一个模块化框架&#xff0c;用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题。 二、What and why 什么和为什么 自 2023 年初和 GenAI 以来&…...

基于PDF流式渲染的Word文档在线预览技术

一、背景介绍 在系统开发中&#xff0c;实现在线文档预览与编辑功能是许多项目的核心需求&#xff0c;但在实际的开发过程中&#xff0c;我们经常会面临以下难点&#xff1a; 1&#xff09;格式兼容性问题&#xff1a;浏览器原生不支持解析Word二进制格式&#xff0c;直接渲染会…...

华为仓颉语言初识:结构体struct和类class的异同

前言 华为仓颉语言是鸿蒙原生应用的一种新的编程语言&#xff0c;采用面向对象的编程思想&#xff0c;为开发者带来新的开发体验。不仅可以和 ArkTs 相互调用&#xff0c;更能提升应用程序的性能&#xff0c;更重要的是仓颉语言的特点结合了 java 和 C 的特点。对开发者来说比…...

数据仓库基础知识总结

1、什么是数据仓库&#xff1f; 权威定义&#xff1a;数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。 1&#xff09;数据仓库是用于支持决策、面向分析型数据处理&#xff1b; 2&#xff09;对多个异构的数据源有效集…...

vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步

问题描述 使用element多选checkbox组件&#xff0c;点击勾选取消勾选&#xff0c;视图未变化&#xff0c;再次点击表单其他元素&#xff0c;多选组件勾选状态发生变化&#xff0c;视图和数据未同步 第一次尝试&#xff1a;再el-checkbox-group多选父组件上增加点击事件&…...

linux磁盘分区及挂载、fdisk命令详解

文章目录 1.Linux磁盘分区概念精要‌1.1 分区的定义‌1.2 多分区的必要性‌1.2.1 数据安全隔离‌1.2.2 提升存储效率‌1.2.3 防止系统资源耗尽‌1.2.4 fdisk用法介绍 2.服务器挂载磁盘实战详细步骤2.1检查磁盘情况及格式化2.2磁盘分区2.3 磁盘目录挂载2.3.1 创建挂载目录2.3.2 …...

anaconda 安装教程以及常用命令

安装教程 安装教程 常用命令 Conda是一个非常强大的包管理和环境管理工具&#xff0c;以下是一些常用命令&#xff1a; 环境管理命令 创建环境 创建指定Python版本的环境&#xff1a;例如&#xff0c;创建名为 myenv&#xff0c;Python版本为3.9的环境。conda create -n m…...

C/C++的OpenCV的锐化

图像锐化技术&#xff1a;使用 C/C的OpenCV 增强图像细节 ✨ 图像锐化是一种常见的图像处理技术&#xff0c;其目的是增强图像的边缘和细节&#xff0c;使图像看起来更清晰、更鲜明。这在很多应用中都非常有用&#xff0c;例如医学成像、卫星图像分析以及提升普通照片的视觉质…...

Eigen矩阵存储顺序以及转换

一、Eigen矩阵存储顺序 在矩阵运算和线性代数中,"行优先"(Row-major)和"列优先"(Column-major)是两种不同的存储方式,它们决定了多维数组(如矩阵)在内存中的布局顺序。 1. 行优先(Row-major) 定义:矩阵按行顺序存储在内存中,即第一行的所有元…...

OpenLayers 加载ArcGIS瓦片数据

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 随着GIS应用的不断发展&#xff0c;Web地图也越来越丰富&#xff0c;除了像ESRI、超图、中地数码这样GIS厂商有各自的数据源格式&#xff0c;也有Google…...

2025蓝桥杯WP

引言 在2025年蓝桥杯网络安全赛道中&#xff0c;我们面对涵盖Web安全、逆向工程、PWN、取证分析以及加密解密等多领域的挑战&#xff0c;要求选手具备扎实且全面的安全技术与实战能力。本文将以实战记录的形式&#xff0c;逐题详细还原解题思路与操作步骤&#xff0c;并配以相…...