我正在编写一个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