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

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

打造专属销毁指令

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

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

#!/bin/bash

# 检查参数数量对不对
if [ "$#" -ne 2 ]; then
    echo "用法:$0 <完整文件路径> <销毁时间>"
    echo "示例:$0 /你的/文件路径 'now + 5 minutes'"
    echo "示例:$0 /你的/文件路径 '明天中午12:30'"
    exit 1
fi

# 获取参数
filename=$1
time=$2

# 必须用绝对路径,防止误删
if [[ "$filename" != /* ]]; then
    echo "错误:必须使用完整文件路径"
    exit 1
fi

# 创建文件
touch "$filename"
if [ $? -eq 0 ]; then
    echo "文件 '$filename' 已生成"
else
    echo "创建文件 '$filename' 失败"
    exit 1
fi

# 设置定时销毁(Linux 的 at 命令真香)
echo "rm \"$filename\"" | at "$time"
if [ $? -eq 0 ]; then
    echo "文件 '$filename' 已预约在 $time 销毁"
else
    echo "定时任务设置失败,检查你的 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

最后唠叨两句

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

你可能感兴趣的:(Linux,操作系统,linux,chrome,运维)