我正在尝试设置一个 cron 作业来删除文件,我正在使用 plesk 界面,命令如下:
* * * * 1-7 rm /mypath/file_name_to_delete
这应该每分钟执行一次,对吧?但它似乎不起作用。
答案1
一些观察:
- crontab 条目的第五列的范围是 0(星期日)到 6(星期六),而不是 1-7。
- cron 作业中的环境设置非常稀疏,任务的行为通常与交互式 shell 中不同。这是一个很大的挑战,但请确保命令
rm
在$PATH
变量中。 调试 cron 作业比较棘手。有时,未重定向到文件的作业的输出会通过邮件发送给您。有时则不会。请更好地控制作业的输出:
* * * * * my_cron_job >> /home/me/cron_job.log 2 >> /home/me/cron_job.err
尝试一些简单的事情来确保 cron 正常工作并按您期望的方式工作。例如:
* * * * * /usr/bin/date >> /home/me/cron.test 2>&1
将测试基本功能。您可以从这里开始使其变得更加复杂。
答案2
mobrule 的答案是一个很好的故障排除指南。
附加提示:
- 如果您没有收到任何邮件,则系统可能未完全配置:所有 cron 实现(据我所知)都会将输出(stdout 和 stderr)发送给创建 crontab 的用户(有些还支持使用变量 MAILTO 来设置该用户)。如果未正确配置用户的本地邮件传递,通常会出现问题。如果您使用 cron,请务必确保已设置本地邮件传递。大多数 Linux 发行版都会在您安装其默认邮件服务器时自动执行此操作,该服务器会将邮件转储到 /var/spool/mail/,或将其转发到
.forward
用户 $HOME 文件中给出的地址。如果您使用 cron,则应该修复此问题,否则错误消息将被丢弃。 - 如果您只能使用 Plesk,您可能无法访问上面提到的某些设置(尽管它们应该由托管服务提供商设置)。在这种情况下,将 stdout 和 stderr 重定向到文件是一个很好的解决方法,如 mobrule 的回答中所述。
答案3
rm filename 命令需要“是”或“否”确认。因此,如果没有确认,则无法执行该命令。
有一个“rm -f filename”命令用于无需确认即可删除文件。