【问题标题】:Setting Cron job to delete file after 24 hours将 Cron 作业设置为 24 小时后删除文件
【发布时间】:2013-04-25 21:01:33
【问题描述】:

我阅读了所有相关问题,但无法理解。按照大家的建议,我正在使用 Plesk CPanel 设置 cron 作业。

我想在 24 小时后删除文件夹中的所有文件。假设我必须在每 2 分钟后删除它(这样我就可以检查它的工作与否)。

我有两个选择:

  1. 使用 cron 作业运行 PHP 文件,在 24 小时后删除所有文件
  2. 使用 cron 作业命令 `rm` 删除所有文件

我尝试了两种方法,但无法完成我的任务。

这是cpanel计划任务的图片:

http://i41.tinypic.com/2n0tsfs.png

我想从文件夹var/www/example.com/public/js/complied 中删除文件。应删除此 complied 文件夹中的所有文件。我不知道在命令文本字段中写哪个。

我应该使用以下命令吗?

rm /var/www/example.com/public/js/compiled/*.*

或者我应该执行一个 php 文件?

env php -q/var/www/example.com/public/js/cron.php

这个Cron.php的源码是:

<?php
$dir = "compiled"; // directory name



foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..')
        continue;

        unlink($dir.DIRECTORY_SEPARATOR.$item);
        echo "All files deleted";
    }   
//rmdir($dir);

?>

我已经测试了这段代码,它工作正常。

提前致谢。

【问题讨论】:

  • 任何可行的解决方案?需要相同的命令。

标签: php cron crontab cron-task


【解决方案1】:

我在 shell 脚本中使用它...

find /some/path -mtime +7 -exec rm {} \; # delete > 7 days old

【讨论】:

  • 但他正在尝试 -mtime +7 在 7 天后删除文件我如何在每 2 分钟内执行一次因为我知道每 24 小时它应该是 -mtime +1 但如果我想要怎么办每两分钟测试一次?
  • 该命令将删除超过 7 天的文件。您可以将 cron 作业设置为每分钟运行一次,或者按您喜欢的频率运行,这样每分钟您都会删除超过 7 天的文件(或 1 在你的情况下)。如果您还想修改命令以进行测试,请参阅查找手册页:linux.die.net/man/1/find
  • 如何排除.php文件?
  • @user2290749 -mmin 2
【解决方案2】:

要稍微优化一下 MrCleanX 的解决方案,请使用 xargs

find /some/path -type f -mtime +7 -print0 | xargs -0 --no-run-if-empty rm

xargs 不是为每个要删除的文件调用 rm,而是将许多文件打包到一个对 rm 的调用中

-print0-0 的内容是使用以 NULL 结尾的字符串来生成 findxargs,这是处理名称中包含空格和其他有趣字符的文件名所必需的。

【讨论】:

  • 请注意,如果您不包含 -print0,xargs 可能会失败并出现神秘错误 xargs: argument line too long
【解决方案3】:

如果您可以访问您的服务器或 SSH,您只需将其添加到您的 crontab。

在你的 SSH 中输入

crontab -e

你会在上面看到一个 cron 作业列表,只需将这行代码附​​加到你的 cronjob 中:

0 10 * * * rm -rf /var/www/example.com/public/js/compiled/*

上面的代码意味着您每天早上 10 点删除您提供的路径中的所有文件。 有关 Cron 的更多信息,请参阅此链接:http://en.wikipedia.org/wiki/Cron

【讨论】:

    【解决方案4】:

    每天删除一次对我有用

    0 0 * * * rm -rf /home/user/public_html/folder
    

    如果您想删除此文件夹中的所有内容,但保留文件夹本身:

    0 0 * * * rm -f /home/user/public_html/folder/*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多