我有一个 cronjob,它每分钟运行一次并检查某个文件是否存在。如果没有这样的文件,作业就会默默结束。如果有文件,则启动另一个脚本。该脚本完成后会删除该文件。它的执行时间最多可能需要 20 分钟。
我的问题是:这个方案有什么缺陷吗?将这样的文件存储在 tmp 中可以吗?我能确保不会有任何东西试图删除它吗?
谢谢您的回复!
此方案的目的是允许通过 Web 界面运行该脚本。脚本本身位于用户的主文件夹中并对其内容进行操作。我不确定在 /var/run 中创建 pid 文件是否合适。
答案1
我猜你说的是 Linux 系统。如果你没有设置任何东西来清理 /tmp,它不会自动完成。唯一的例外是当你重新启动系统时 - 大多数 Linux 发行版在重新启动时都会清理 /tmp。当然,你可以搜索执行 celan up 的脚本,如果你担心这一点,你可以禁用它
答案2
首先...我认为如果您“完成后删除文件”,您的作业可能会运行多达 20 次。从您所说的内容来看,一旦检测到文件,就应该移动/删除它。
答案3
只要您检查以确保您的文件处理脚本尚未运行,那么您应该没问题。/tmp 对于这种事情来说是没问题的,除非您遇到随机重启,而这本身就是一个相当大的问题。
答案4
您可能需要查看他的手册页。这种标志通常位于 /var/run 中。您应该对两个进程使用一个标记文件,以防止运行多个处理脚本。