【Linux】如何创建一个可定时删除的文件

news/2025/2/8 4:12:26/

今天我要教你一个 Linux 小魔法:如何创建会自我销毁的文件!这些文件能在指定分钟数后自动消失,或者在特定时间点自我了结。你可能会问:这玩意儿有什么用?比如我最近就在捣鼓一个邮件通知脚本,需要确保一小时内不会重复发信,这时候定时销毁的标记文件就派上用场啦!

打造专属销毁指令

虽然 Linux 没有现成的自毁文件指令,但咱们可以自己造一个!比你想的简单多了~

先创建这个脚本文件,命名为 sdelete.sh

#!/bin/bash# 检查参数数量对不对
if [ "$#" -ne 2 ]; thenecho "用法:$0 <完整文件路径> <销毁时间>"echo "示例:$0 /你的/文件路径 'now + 5 minutes'"echo "示例:$0 /你的/文件路径 '明天中午12:30'"exit 1
fi# 获取参数
filename=$1
time=$2# 必须用绝对路径,防止误删
if [[ "$filename" != /* ]]; thenecho "错误:必须使用完整文件路径"exit 1
fi# 创建文件
touch "$filename"
if [ $? -eq 0 ]; thenecho "文件 '$filename' 已生成"
elseecho "创建文件 '$filename' 失败"exit 1
fi# 设置定时销毁(Linux 的 at 命令真香)
echo "rm \"$filename\"" | at "$time"
if [ $? -eq 0 ]; thenecho "文件 '$filename' 已预约在 $time 销毁"
elseecho "定时任务设置失败,检查你的 at 命令安装了吗?"exit 1
fi

别忘了赋予执行权限:

chmod +x sdelete.sh

实战演练

场景一:1分钟后自动消失

$ ./sdelete.sh ~/hello.txt 'now +1 minute'
文件 '/home/administrator/hello.txt' 已生成
warning: commands will be executed using /bin/sh
job 6 at Thu Jul 25 17:18:00 2024
文件 '/home/administrator/hello.txt' 已预约在 now +1 minute 销毁$ ls -l | grep -i hello
-rw-rw-r-- 1 administrator administrator          0 Jul 25 17:17 hello.txt

1分钟后检查,文件果然人间蒸发了!

场景二:定点清除

想精确到具体时间?比如下午5:50:

$ ./sdelete.sh ~/hello.txt '17:50'
文件 '/home/administrator/hello.txt' 已生成
warning: commands will be executed using /bin/sh
job 7 at Thu Jul 25 17:50:00 2024
文件 '/home/administrator/hello.txt' 已预约在 17:50 销毁。

原理揭秘

这个脚本的核心是 Linux 的 at 定时任务命令。这个神器可以让你像订外卖一样预定命令的执行时间,几个经典用法:

延迟执行

echo "ls -l /tmp" | at now + 1 minute

精准定时

echo "echo 'Hello, World!'" | at 10:30 AM

跨年彩蛋

echo "shutdown -h now" | at 11:59 PM 12/31/2024

最后唠叨两句

虽然自删除文件可能不算什么杀手级功能,但希望这篇短文能让你会心一笑!下次当你想给脚本加个「冷却时间」,或者需要创建临时标记文件时,记得这个实用的小技巧哦~ (悄悄说:用来整蛊同事也是极好的)


http://www.ppmy.cn/news/1570234.html

相关文章

【中间件】 Kafka

1.先导知识&#xff1a; 消息队列MQ(Message Queue): 将需要传输的数据临时(设置有效期)存放在队列中,进行存取消息消息队列中间件&#xff1a; 用来存储消息的中间件(组件) 2.消息队列的应用场景 异步处理 为什么要使用消息队列&#xff1f; 比较耗时的操作放在其他系统中…

SpringCloud详细讲解

学习目标 微服务框架SpringCloud的核心组件分布式与集群Spring Cloud 优缺点 微服务框架 微服务框架是将某个应用程序开发划分为多个小型服务独立进行业务开发的一种架构模式。以下是对微服务框架的详细介绍&#xff1a; 一、定义与特点 定义&#xff1a;微服务框架围绕业务…

Spring boot启动原理及相关组件

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot应用启动 一个Spring Boot应用的启动通常如下&#xff1a; SpringBootApplication Slf4j public class ApplicationMain {public static void main(String[] args) {ConfigurableApplicationContext ctx SpringApplication.…

2.5-数据结构:AVL树

2.5-AVL树 &#x1f332; 定义与性质 AVL树&#xff08;Adelson-Velsky and Landis Tree&#xff09;是最早发明的自平衡二叉搜索树&#xff0c;通过维护平衡因子确保树的高度始终为 O(log N)。其核心特性为&#xff1a; 平衡因子&#xff1a;任意节点的左右子树高度差绝对值…

Spring Boot统一异常拦截实践指南

Spring Boot统一异常拦截实践指南 一、为什么需要统一异常处理 在Web应用开发中&#xff0c;异常处理是保证系统健壮性和用户体验的重要环节。传统开发模式中常见的痛点包括&#xff1a; 异常处理逻辑分散在各个Controller中错误响应格式不统一敏感异常信息直接暴露给客户端…

自然语言处理-词嵌入 (Word Embeddings)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 词嵌入&#xff08;Word Embedding&#xff09;是一种将单词或短语映射到高维向量空间的技术&#xff0c;使其能够以数学方式表示单词之间的关系。词嵌入能够捕捉语义信息&#xff0c;使得相似的词在向量空间中具有…

配置Apache本地服务支持PHP8--易错点

配置Apache本地服务--易错点 到apache的bin目录下&#xff08;cmd)安装服务配置 apache 支持 php 参考: Windows 11 本地 php 开发环境搭建&#xff1a;PHP Apache MySQL VSCode 安装和环境配置 到apache的bin目录下&#xff08;cmd) 安装服务 httpd -k install -n Apache…

React Native 列表组件:FlashList、FlatList 及更多

在移动开发中&#xff0c;高效展示数据列表至关重要。作为 React Native 开发者&#xff0c;我们可以使用多种强大的工具来完成这一任务。无论是 ScrollView、SectionList 还是 FlatList&#xff0c;React Native 都提供了一系列用于数据展示的组件。 然而&#xff0c;随着数据…