【CSH 入门基础 5 -- csh 文件监控脚本实现】

news2025/1/17 1:20:25

文章目录

    • 背景
    • CSHLL 代码实现
      • cshell 中 unset 的介绍
      • bash 中监控文件的方法

背景

由于开发代码是在外网编译,而镜像的烧写是在内网中的EDA工具中进行的,所以就需要先将代码在外网编译好后,再通过FTP工具将镜像传输到内网中,然后在内网EDA软件中加载镜像,这样每次在不同的环境中重复操作很 费劲,就萌生了一个想法:是不是可以在内网中监控要烧写的文件,如果发现该文件的时间戳发生变化,就将烧写文件从内网中的FTP目录拷贝到烧写目录。

CSHLL 代码实现

#!/bin/csh

set cur_time=`ls -rtl /mnt/ftp/download.img | awk '{print $8}' | awk -F ":" '{print $1$2}'`
sleep 1

while (1)
	set pre_time=$cur_time
	unset cur_time
	set cur_time=`ls -rtl /mnt/ftp/download.img | awk '{print $8}' | awk -F ":" '{print $1$2}'`
	if ($pre_time == $cur_time) then
		echo "sleep 3s wait for new version"
		sleep 3
	else
		echo "copy new files to eda dir"
	endif
end

测试结果:
在这里插入图片描述

关于 命令 awk 的使用请见:嵌入式开发 Linux 常用命令系列 7 – awk 常用方法

cshell 中 unset 的介绍

C Shell中的unset命令用于删除环境变量或者shell变量。该命令的格式如下:

unset variable

在这里,variable是你要删除的变量的名字。

例如,假设你已经设置了一个名为MY_VAR的环境变量,你可以使用以下命令删除它:

unset MY_VAR

需要注意的是,unset命令只能删除当前shell环境中的变量,它不能删除其他shell环境或者子进程中的变量。此外,如果你试图删除一个不存在的变量,unset命令不会报错,它会默默地忽略这个操作。

bash 中监控文件的方法

watch命令可以定期执行一条命令,并显示其输出,因此可以用来监控文件的状态。例如,下面的命令会每两秒钟显示一次文件 file.txt 的前10行:

watch -n 2 "head file.txt"

inotify 是一个Linux特有的文件系统监视机制,它可以用来监视文件或目录的变化。在Shell中,可以使用inotifywaitinotifywatch等命令来使用这个机制。例如,下面的命令会监视file.txt的修改,并在文件被修改时输出一条消息:

 inotifywait -m -e modify file.txt

请注意,inotify的相关命令可能并不在所有的Linux发行版中都预装,如果需要使用,你可能需要手动安装。

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

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

相关文章

MyBatis配置文件:配置连接数据库的环境,实现数据库连接

目录 1、MyBatis配置数据库环境的连接方式 1.1连接方式一:MyBatis核心配置文件配置数据库连接信息 1.2连接方式二:在MyBatis核心配置文件中引入properties文件,配置数据库的环境 2、MyBatisd核心配置文件连接数据库的环境完整配置信息 3…

Win11麦克风说话别人听不见解决办法

Win11麦克风说话别人听不到声音怎么办?麦克风没有声音可能有三种原因造成的,第一种声音设置里面确认麦克风设备是否启用,第二种查看麦克风的访问权限,第三种是检查驱动是否有问题,下面就简单的讲一下解决方法&#xff…

【loadbalancer】还在用Ribbon?试试Spring自带的LoadBalancer吧

Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代Ribbon。 Spring官方提供了两种客户端都可以使用loadbalancer: RestTemplate:Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程…

【第二阶段】it关键字

1.invoke()函数 meThod1(1,2,3)等价meThod1.invoke(1,2,3) fun main() {val meThod1:(Int,Int,Int)->String{n1,n2,n3->val num"kotlin"println("num$num,n1$n1,n2$n2,,n3$n3")"num$num,n1$n1,n2$n2,,n3$n3,"}//调…

Vue响应式数据的原理

在 vue2 的响应式中,存在着添加属性、删除属性、以及通过下标修改数组,但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。 vue3 采用了 proxy 代理,用于拦截对象中任意属性的变化,包括:属性的读写、属性的…

前端使用ReadableStream.getReader来处理流式渲染

文章目录 前言一、纯css二、vue-typed-js插件1.安装2.注册3.使用总结 三、ReadableStream1.ReadableStream是什么?2.ReadableStream做什么?3.ReadableStream怎么用 前言 需求:让接口返回的文章根据请求一段一段的渲染,同时可以点击…

Spring MVC视图解析器

Spring MVC视图解析器 ➢ AbstractCachingViewResolver:➢ XmlViewResolver:➢ ResourceBundleViewResolver➢ UrlBasedViewResolver:➢ InternalResourceViewResolver:➢ FreeMarkerViewResolver➢ ContentNegotiatingViewResolv…

OffSec Labs Proving grounds Play——FunboxEasyEnum

文章目录 端口扫描目录扫描文件上传漏洞利用查看用户爆破密码sudo提权flag位置FunboxEasyEnum writeup walkthrough Funbox: EasyEnum ~ VulnHub Enumeration Brute-force the web server’s files and directories. Be sure to check for common file extensions. Remote…

OCR的发明人是谁?

OCR的发明背景可以追溯到早期计算机科学和图像处理的研究。随着计算机技术的不断发展,人们开始探索如何将印刷体文字转换为机器可读的文本。 OCR(Optical Character Recognition,光学字符识别)的发明涉及多个人的贡献&#xff0c…

布局性能优化:安卓开发者不可错过的性能优化技巧

作者:麦客奥德彪 当我们开发Android应用时,布局性能优化是一个必不可少的过程。一个高效的布局能够提高用户体验,使应用更加流畅、响应更加迅速,而低效的布局则会导致应用的运行变得缓慢,甚至出现卡顿、崩溃等问题&…

植被利用了多少陆地降水?

降水部分被植被利用,部分转化为河水流量。量化植被直接使用的水量对于解读气候变化的影响至关重要。 新提出的模型的预测与之前的结果进行了比较。资料来源:AGU Advances 水是地球的重要组成部分,因此,了解大尺度的水平衡及其建模…

【Rust】Rust学习 第十章泛型、trait 和生命周期

泛型是具体类型或其他属性的抽象替代。我们可以表达泛型的属性,比如他们的行为或如何与其他泛型相关联,而不需要在编写和编译代码时知道他们在这里实际上代表什么。 之后,我们讨论 trait,这是一个定义泛型行为的方法。trait 可以…

Springboot04--vue前端部分+element-ui

注意点: 这边v-model和value的区别:v-model是双向绑定的,value是单向绑定 li的key的问题 vue的组件化开发: 1. NPM(类似maven,是管理前段代码的工具) 安装完之后可以在cmd里面使用以下指令 2.…

带你认识储存以及数据库新技术演进

01经典案例 1.0 潜在问题 02存储&数据库简介 2.1 存储器层级架构 2.1 数据怎么从应用到存储介质 2.1 RAID技术 2.2 数据库 数据库分为 关系型数据库 和 非关系型数据库 2.2.2 非关系型 2.2.1 关系型 2.3 数据库 vs 经典存储-结构化数据管理 2.3.1 数据库 vs 经典存储-事务能…

c++ static

static 成员 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用 static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。 看看下面代码体会一下: //其他类 class …

​运行paddlehub报错,提示:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte…**​

我在windows11环境下运行paddlehub报错,提示:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte…** 参考篇文字的解决方案:window10下运行项目报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte...的解决办法_uni…

C语言——将一串字符进行倒序

//将一串字符进行倒序 #include<stdio.h> #define N 6 int main() {int a[N]{0,1,2,3,4,5};int i,t;printf("原数组数值&#xff1a; ");for(i0;i<N;i)printf("%d",a[i]);for(i0;i<N/2;i){ta[i];a[i]a[N-1-i];a[N-1-i]t;}printf("\n排序…

Xilinx DDR3学习总结——3、MIG exmaple仿真

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Xilinx DDR3学习总结——3、MIG exmaple例程仿真 前言仿真 前言 前面我们直接把exmaple例程稍加修改就进行了抢先上板测试&#xff0c;证明了MIG模块工作时正常的&#xff0…

SWIG使用方法

安装 下载 swigwin软件包&#xff0c;解压到合适的位置&#xff0c;然后将路径添加到环境变量即可。 编写C代码 //vector.hpp class Vector { private:int x;int y; public:Vector(int,int);double abs();void display(); };//vector.cpp #include "vector.hpp" …

C语言 ——指针数组与数组指针

目录 一、二维数组 二、指针数组 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;书写方式 &#xff08;3&#xff09;指针数组模拟二维数组 三、数组指针 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;使用数组指针打印一维数组 &#xff08;3&a…