linux - 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 安排此类功能。如果有更好的方法可以做到这一点,请提出建议。
解决方案
使用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
推荐阅读
- javascript - 控制导航栏
- c# - 在 asp.net 核心的控制器中路由之前确定 URL
- angular - 在 Angular 中添加 formControlName 会破坏输入控件中的“值”
- excel - 如何在excel中自动总结笔,书和纸的销售总数
- python - 我们想获取 Azure Active Direcotry 的用户工作信息
- mysql - .Net Core 3.1 Linq to Entities - 如何在 where 子句中连接字符串
- ios - 如何在 App Store Connect 中选择构建
- python - 如何散点图3列
- swift - 如何在 Mac Catalyst 中使用 TouchBar - 滑块?
- swift - MacOS:如何/在我的应用程序文件夹中存储以编程方式创建的文件?