如何测试crontab条目?

问题描述:

我在我的crontab看起来像这样的条目:如何测试crontab条目?

0 3 * * * pg_dump mydb | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz 

该脚本完美的作品时,我从外壳执行它,但它似乎并没有每天晚上跑。我假设有权限的问题,也许crontab运行在不同的用户或什么东西。我怎样才能调试呢?我是共享主机环境(WebFaction)。

+0

我有同样的问题,但它生成一个空文件。我有一个.pgpass文件,所有路径都已满并且输出文件已创建,但它是空的。我想我会加入这个问题,而不是问另一个 – Ben 2010-06-12 00:20:08

+2

@Ben:可能更好地问另一个问题实际上......因此,它不像一个论坛那样工作......它不像对开始一个新的“线程”如果你的问题稍有不同。如果您的文件实际上正在创建,那么您可能有完全不同的问题。 – mpen 2010-06-12 02:26:27

你需要逃离 “%” 字符backslashes-看到的crontab(5)用户手册。我有完全相同的问题。

例如:cron的错误

0 7 * * * mysqldump usblog | bzip2 -c > usblog.$(date --utc +\%Y-\%m-\%dT\%H-\%M-\%SZ).sql.bz2 

你没有收到电子邮件?即使你把“[email protected]”放在crontab中吗?

如果pg_dump或gzip不在系统默认路径中(因此使用“type pg_dump”来检查它们的位置,crontab通常只在/ bin或/ usr中运行命令),您可能还需要在crontab中设置PATH/bin默认)

+0

看起来工作。谢谢 !! – mpen 2010-06-16 20:51:51

始终在crontab entrties中使用完整路径。例如,/usr/bin/gzip。您还需要为pg_dumpdate这样做。

+1

此外,将'〜'替换为您的主目录的真实路径。 – JayM 2010-06-09 21:00:33

当你说它不起作用时,你是什么意思?它根本不生成文件还是空的?

如果你的系统设置正确,如果你的命令产生任何输出,crontab应该给你发一封电子邮件。

尝试这样的事情来验证crontab正在运行。它会每分钟触摸一次该文件。

* * * * * touch /tmp/foo 

并检查你的路径,像詹姆斯提到的。

+0

不生成文件。我确定crontab正在运行。 – mpen 2010-06-11 07:06:51

+0

你确定你被允许访问crontab吗?我知道一些共享主机提供商不允许它。 您应该与您的托管公司谈谈此事。 您可以检查的一件事是查看文件'/ etc/cron.allow'和'/ etc/cron.deny'是否存在。如果'cron.allow'确实存在并且您的用户名不在其中,则不能使用crontab。如果存在'cron.deny',则不需要在其中列出用户名。 – JayM 2010-06-11 17:27:46

+0

我的其他crontabs工作。 WebFaction很酷。他们为共享用户提供了很多权力。 – mpen 2010-06-16 20:53:06

如果这是类似/ etc/crontab中,确保用户包括:在crontab项

0 3 * * * <user_goes_here> pg_dump mydb | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz