我正在运行Ubuntu x64 14.04并且有一个cron设置来运行shell脚本。
0 0 * * * sh root/delete.sh
它应该每天午夜运行一次。根据我的日志,它运行了一次,然后第二天晚上再也没有运行。
我错过了一些非常明显的东西吗?
答案 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
)并且在顶部有一条正确的#!
行。