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

文章目录

    • 背景
    • 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

测试结果:
【CSH 入门基础 5 -- csh 文件监控脚本实现】_第1张图片

关于 命令 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发行版中都预装,如果需要使用,你可能需要手动安装。

你可能感兴趣的:(#,Shell,系列文章,cshell,文件监控,cshell,unset,shell,notify)