设置Cron job 24小时后删除文件


Setting Cron job to delete file after 24 hours

我看了所有相关的问题,还是看不懂。我使用Plesk CPanel来设置cron job,因为每个人都建议这样做。

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

我有两个选择:

  1. 运行PHP文件,在24小时后使用cron作业删除所有文件
  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);
?>

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

我在shell脚本中使用这个…

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

要优化MrCleanX的解决方案,请使用xargs:

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

xargs不是为每个文件调用rm来删除,而是将许多文件打包到一个单独的调用rm

-print0-0的东西是使findxargs使用NULL终止字符串,这是处理文件名中有空格和其他有趣字符的必要条件。

如果您可以访问您的服务器或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

每天删除一次对我来说很有效

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

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

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