两个crons在linux中做同样的工作,哪一个更好

时间:2015-10-01 17:28:59

标签: linux cron

我必须在晚上11:30删除所有超过30天的pdf文件

下面给出的是[user@host rpmbuild]$ rpmbuild -bb nano <snip> + exit 1 error: Bad exit status from /var/tmp/rpm-tmp.2uw1tZ (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.2uw1tZ (%install) [user@host rpmbuild]$ cat /var/tmp/rpm-tmp.2uw1tZ #!/bin/sh RPM_SOURCE_DIR="/home/user/rpmbuild/SOURCES" RPM_BUILD_DIR="/home/user/rpmbuild/BUILD" ...

中的两个工作cronjobs
/etc/crontab

我想知道哪一个更好,其中的原因。

请帮忙。

1 个答案:

答案 0 :(得分:4)

答案可能是选项3.使用-delete

30 23 * * * root find /var/www/html/site/reports/ -name '*.pdf' -type f -mtime +30 -delete

问题中的两个选项都会产生子shell以执行删除操作,此选项完全避免。

-delete的可移植性有些限制。 GNU find和FreeBSD find一样支持它(至少根据this man page),但OpenBSD find似乎不支持。我不了解其他任何人。

正如user3159253在前两个选项中的评论中说的那样,第一个可能会更快,因为需要更少的rm调用,但对于其中包含换行符的文件名是不安全的(可能还有一些其他字符但是我不确定。

使用-exec rm {} \+的第二个选项的修改会更好,并且通过一次提供多个文件也可以减少rm的调用次数,可能会或可能不会更好比那时的第一个选项,但仍然没有超过这里给出的选项。