我如何testing一个新的cron脚本?

我正在运行几个不同的Linux发行版(Fedora 11,CentOS 5和SuSE 10.2),并且经常遇到一个问题,即当我想从命令行直接调用一个新的脚本时,但是由于PATH或其他所需环境variables的轻微变化而从cron调用时会失败。

有没有一种方法可以testing运行一个单独的脚本,就好像它正在从cron运行,而不必运行整个crontab或使用运行部分来运行整个cron.daily / .hourly等目录? 我想我可以暂时编辑我的crontab,在接下来的几分钟里运行这个脚本,但是我宁愿有一个更独立的解决scheme,这样我就不会冒险搞乱crontab。

从谷歌search path in crontab

 root@pingu # cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 

你基本上想要设置PATH,然后不必担心变化。 另外,快速testing是使用相同的环境variables,通过SSH在您的所有机器上运行脚本。

如果我正在运行一个单独计划的cron作业(crontab中的一个单独的行),我会在每分钟或每隔一分钟计划一次,因为我正在testing它。 一旦它被testing出来,我将编辑crontab行,以便按照我所希望的频率运行。

作为一个侧面说明,如果我想testingcron本身是否正常工作,并将结果通过电子邮件发送到正确的地址(非常重要),我会将以下行添加到我的/ etc / crontab中:

  * * * * * root ls /doesnotexistfoobar 

每分钟运行一次,并尝试对不存在的目录执行ls 。 应该每分钟发送一封失败信息。 当我得到它的工作,我评论这条线。

回到你的问题:你可能不想修改现有的cron作业来经常运行,因为有可能忘记把它改回来,而且因为运行你的cron.hourly,cron.daily或cron.whatever经常可能会有副作用,取决于你在那里。 为了确保您在从cron调用的环境中运行脚本,我build议修改上面的“ls”技巧:

添加一行到你的crontab直接运行脚本:

  * * * * * root /etc/cron.hourly/customscript 

这样,你可以随时运行它,因为你需要testing它。

我不知道更直接的解决scheme,但是你可以创build一个用户(比如说crontest),并且使用特定于用户的crontab作为'crontest'用户通过编辑来testing脚本它会让脚本在接下来的几分钟内运行。