在Ubuntu的Cron工作

时间:2011-09-26 16:47:52

标签: linux ubuntu cron crontab

这应该是非常简单的,但我似乎无法通过谷歌,Stackoverflow和手册页阅读几篇教程来实现它。

我创建了一个每1分钟运行一次的cron(用于测试),所有它基本上都是吐出日期。

crontab -l
* * * * * /var/test/cron-test.sh

cron-test文件是:

echo "$(date): cron job run" >> test.log

等待很多分钟,我从未看到过test.log文件。

我可以手动调用“test.sh”并将其输出到&追加。

我想知道我错过了什么?我也是这样做的。我想知道我是否错过了解根的位置?我的路径搞砸了,因为它附加了某种主目录吗?

谢谢!


更新-----------------

看来我没有关注目录路径。如果我将目录更改为root的主目录:

# cd

我看到输出文件“test.log”,每分钟打印出所有日期。

所以,我会更新我的问题,我错过了什么 - 理解/路径?我需要使用一个术语来从根目录开始吗?

干杯!

更新2 -----------------

好的,所以我得到了我所缺少的东西。

设置crontab的脚本工作正常。它找到了相对于根目录的文件。即:

* * * * * /var/test/cron-test.sh

但是“cron-test.sh”文件没有相对于根目录设置。因此,当“root”运行脚本时,它会将其转储回“root”的主目录。我的想法是,由于脚本在“/ var / test /”中运行,文件也会被转储到“/ var / test /".

相反,我需要在脚本文件中设置位置以正确地转储它。

echo "$(date): cron job run" >> /var/test/test.log

这很有效。

2 个答案:

答案 0 :(得分:5)

您没有为test.log提供任何路径,因此它将在当前路径(默认情况下是用户的主目录)中创建。 您应该更新脚本并提供完整路径,例如:

echo "$(date): cron job run" >> /var/log/test.log

答案 1 :(得分:2)

重申您更明确地给出的答案:cron作业在执行用户的主目录中启动,在您的案例根目录中。这就是为什么相关文件以~root结尾。