如何使用 Cron 每天删除目录中的所有文件?

问题描述 投票:0回答:1

我需要每天使用 cron 作业删除特定文件夹中的所有文件。我当前的 crontab 条目如下所示:

0 22 * * * /bin/rm -rf /var/www/abcd/app/管理/应用程序/会话/*

但是,这并不总是有效,尤其是当文件夹中有大量文件时。有时我会收到错误,因为我使用此 crontab 将错误重定向到文件中:

0 22 * * * rm -rf /var/www/abcd/app/Management/application/session/* >> /home/ubuntu/errorgetter.log 2>&1

这是错误:

/bin/sh: 1: /bin/rm: 参数列表太长

注意:我以root用户创建了crontab -e,因此不存在删除它的权限问题。

现在我该怎么做?

cron delete-file cron-task
1个回答
0
投票

我能够在 cron 作业中使用 find 命令解决这个问题。这是对我有用的更新后的 crontab 条目:

0 22 * * * find /var/www/abcd/app/Management/application/session/ -type f -delete

为什么有效:

find:单独处理文件,避免使用 rm 处理太多文件时出现的“参数列表太长”错误。

-type f:确保仅删除文件(而不是目录)。

-delete:直接删除每个文件,而不扩展成很长的参数列表。

现在,它将在每天晚上 10 点自动运行,以删除指定文件夹中的所有文件。

注: 确保运行 cron 作业的用户具有删除指定目录中文件的必要权限。您可以通过以同一用户身份手动运行该命令来验证这一点。如果出现权限问题,您可能需要使用 chmod 或 chown 调整所有权或文件权限。

如果以 root 用户身份运行 crontab -e,则 cron 作业将由 root 用户执行。 如果您以普通用户(例如 ubuntu 或 www-data 等用户)身份运行 crontab -e,则 cron 作业将由该特定用户执行。

查看特定用户的cronjob

sudo crontab -u <username> -l

© www.soinside.com 2019 - 2024. All rights reserved.