Cron只跑过一次

时间:2015-04-09 14:42:52

标签: cron crontab

我正在运行Ubuntu x64 14.04并且有一个cron设置来运行shell脚本。

0 0 * * * sh root/delete.sh

它应该每天午夜运行一次。根据我的日志,它运行了一次,然后第二天晚上再也没有运行。

我错过了一些非常明显的东西吗?

1 个答案:

答案 0 :(得分:1)

很难确切地说出你想要做什么,但我可以告诉你这个命令实际上会(尝试)做什么。

0 0 * * * sh root/delete.sh

Cron作业在工作目录设置为用户主目录的情况下运行。此命令将运行sh(解析为/bin/sh)并将字符串root/delete.sh作为参数传递给它。 /bin/sh会将其解释为文件名;因为它不是以/开头,而是相对于当前目录进行解释。

因此,如果$HOME/root/delete.sh中有可执行脚本,该行应该每晚午夜执行。

为清楚起见,您应该(a)使用绝对路径名,并且(b)确保脚本本身具有正确的#!行(#!/bin/sh#!/bin/bash),并且直接调用脚本,而不是将其名称传递给sh命令。这些都不是必要的,但它们会使你的意图变得明显。

如果delete.sh位于/root目录中,而不在您的主目录下,那么您应该:{/ p>

0 0 * * * /root/delete.sh

如果它在$HOME/root之下,那么你应该:

0 0 * * * $HOME/root/delete.sh

同样,这取决于delete.sh是否可执行(chmod +x delete.sh)并且在顶部有一条正确的#!行。