5分钟后使用shell脚本删除新创建的文件



我正在编写一个shell脚本,在其中我在路径/path/to/ABC/ABC.txt中创建了一个文件ABC.txt
现在,在脚本的末尾,我想安排一个cron作业在5分钟后删除此文件(仅一次,不重复)
我无法在此脚本中广告5分钟的sleep,因为服务器上的多个用户正在使用它来获取多个路径/文件。并且在用户执行该脚本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

相关内容

  • 没有找到相关文章