1

我这里有点咸菜,想知道是否有人可以给我一些指示:

我有一个每天为特定用户执行的 cron 作业,并且应该扫描特定目录中的文件。从技术上讲,这是两个工作。我打开了 cron.log 来验证它们是否真的在执行,它们是:

May 24 11:03:01 AppNameGoesHere /USR/SBIN/CRON[11257]: (mongrel_AppNameGoesHere) 
  CMD (rm -rf /var/www/apps/AppNameGoesHere/current/public/
  {popular,index,purchasing,purchasing-alternate,support,about-us,guarantee,screenshots}.htm{,l})
May 24 11:04:01 AppNameGoesHere /USR/SBIN/CRON[11260]: (mongrel_AppNameGoesHere)
  CMD (rm -rf /var/www/apps/AppNameGoesHere/current/public/
  {stats,popular,bcf,articles,expenses})

我已经删除了实际的用户名并对其进行了格式化,以便在 StackOverflow 上不那么难看。

现在,我的问题是:尽管我可以看到这些删除正在执行并且显然在日志中成功,但如果我转到指定的目录,文件仍然存在。我最初怀疑权限 hijinx 正在进行,但我已经验证我可以通过 su-ing 到 mongrel_AppNameGoesHere 用户并发出单独的 rm 命令或通过将 cron 作业复制/粘贴到命令行来手动删除文件。尽管该 cron 作业成功执行了好几天,但我没有手动执行的任何操作都会保持未启动状态。

关于可能发生的事情有什么建议吗?我以前直接在 /etc/crontab 文件中使用 Dapper Drake 和这些 cron 作业,当我升级到 Hardy 时,我将它们移动到用户特定的 crontabs(通过sudo crontab -e - u mongrel_AppNameGoesHere),这就是它们似乎停止工作的地方。)

4

1 回答 1

6

问题是 {} 是由 shell 提供的 shell 扩展的一部分因此为了使其工作,您需要更改执行 cron 条目的 shell。

默认情况下使用 /bin/sh,所以只需输入:

SHELL=/bin/bash

作为 crontab 中的第一行,所以事情应该重新开始工作。

于 2009-05-24T16:48:15.547 回答