shell脚本监测文件变化

本文介绍Linux下du命令的应用技巧,用于查看文件和目录占用的磁盘空间,帮助用户有效管理磁盘资源;同时介绍了md5sum命令,用于生成文件的md5值以确保文件完整性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

我使用过的Linux命令之du - 查看文件的磁盘空间占用情况

 

用途说明

du命令是用来查看磁盘空间占用情况的,在Linux系统维护时常会用到,并且通常与df命令搭配使用。首先使用df看一下各个磁盘分区的占用情况,如果某个分区的占用超过一定百分比(比如80%),就认为该分区应该清理一下了。如果不太确定从哪里下手清理,就可以使用du来统计一下各个目录的磁盘占用情况,找到磁盘占用大的目录。

常用参数

-s 显示总数量。

-h 显示的数量更好看些,比如用K/M/G表示大小。

--max-depth=N 统计的目录深度。当N=0时等同于-s,所以和--s参数不能同时出现。

-b 显示为字节数。

-k 显示为K字节数。

-m 显示为兆字节数。

 

 

md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。

md5校验,有很小的概率不同的文件生成的md5可能相同。比md5更安全的校验算法还有SHA*系列的。

在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

### 如何使用 Shell 脚本检测文件是否存在 在 Shell 脚本中,可以利用条件语句 `if` 和 `[ ]` 或者 `test` 命令来判断文件是否存在。以下是几种常见的实现方式: #### 方法一:基本文件存在性检测 此方法适用于简单地检查某个文件是否存在。 ```bash #!/bin/bash # 定义文件路径 file='/path/to/your/file.txt' # 使用 -e 参数检测文件是否存在 if [ -e "$file" ]; then echo "文件 '$file' 存在。" else echo "文件 '$file' 不存在。" fi ``` 这种方法基于 `-e` 参数[^2],它可以检测指定路径下的任何类型的文件(包括目录、链接等),只要该路径有效即可。 --- #### 方法二:仅检测常规文件的存在性 如果只想确认某路径下是否为一个普通的文件(而非目录或其他特殊文件类型),可使用 `-f` 参数。 ```bash #!/bin/bash # 定义文件路径 file='/path/to/your/file.txt' # 使用 -f 参数检测是否为普通文件 if [ -f "$file" ]; then echo "文件 '$file' 是一个普通文件并存在。" else echo "文件 '$file' 不是一个普通文件或者不存在。" fi ``` 这里使用的 `-f` 参数专门针对普通文件进行检测[^1]^。 --- #### 方法三:循环检测直到文件出现 有时可能需要持续监控某一文件的状态变化,例如等待其被创建出来后再继续操作。 ```bash #!/bin/bash # 定义文件名 file='target_file.txt' while [ ! -e "$file" ]; do sleep 1 # 每隔一秒重新检测一次 done echo "'$file' 已经存在!" ``` 在此脚本片段里,我们通过无限循环配合 `sleep` 函数实现了周期性的探测行为,一旦发现目标对象满足条件即刻退出循环[^2]^。 --- #### 方法四:当文件缺失时自动创建之 对于某些场景而言,在验证到特定资源丢失之后立即补全可能是必要的逻辑之一。 ```bash #!/bin/bash # 设定待核查的目标位置 hdmi_check_file="/usr/local/bin/drm-hotplug.sh" # 如果文件不存在就提示找不到并且尝试新建一份空白副本 if [ ! -f "$hdmi_check_file" ]; then echo "未找到 HDMI 插拔监测脚本..." touch "$hdmi_check_file" chmod +x "$hdmi_check_file" echo "#!/bin/bash" > "$hdmi_check_file" echo "" >> "$hdmi_check_file" echo "已初始化新的 DRM HotPlug 处理器脚本 -> $hdmi_check_file" else echo "HDMI 插拔监测脚本已经准备完毕!" fi ``` 上述例子展示了如何先判定再依据实际情况采取行动的过程[^4]^。 --- ### 总结 以上提供了四种不同需求背景下的解决方案,涵盖了从基础功能实现到更复杂业务流程处理等多个层面的内容介绍。每种方案都有各自适用范围,请根据实际项目情况选择合适的策略加以应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值