首页 > 解决方案 > 5 分钟后使用 shell 脚本删除新创建的文件

问题描述

我正在编写一个shell 脚本,在其中创建一个文件ABC.txt路径/path/to/ABC/ABC.txt
现在我在脚本的最后,我想安排一个 cron 作业在 5 分钟后删除这个文件(只有一次,不会重复)。
我不能sleep在此脚本中添加 5 分钟,因为服务器上的多个用户正在将它用于多个路径/文件。并且在用户执行此脚本 5 分钟后,file.txt相应路径中的对应文件应被删除。

我从 cronjob 中读到的是,您可以使用脚本触发脚本crontab -e,然后提供作业和脚本路径的定期符号H/5 * * * * /bin/sh /path/to/ABC/ABC.txt

有人可以告诉我如何使用 cron 安排此类功能。如果有更好的方法可以做到这一点,请提出建议。

标签: linuxshellcronscheduled-tasksscript

解决方案


使用at命令:

#!/usr/bin/env bash
script_path="$(realpath -s -- "$0")"
# start script
...
# end script
echo "rm -- \"$script_path\"" | at "now + 5 minutes"

使用带睡眠的后台进程:

#!/usr/bin/env bash
script_path="$(realpath -s -- "$0")"
# start script
...
# end script
( sleep 300 && rm -- "$script_path" ) &

使用父selfdestruct进程:

编写一个selfdestruct如下所示的小脚本:

#!/usr/bin/env bash
dt="$1"; shift
"$@"
( sleep "$dt" && rm -- "$1" ) &

并运行你的脚本

$ selfdestruct 300 /path/to/script arg1 arg2 arg3

推荐阅读