Crontab-在目录中运行


170

我想将作业设置为每天在crontab根目录中运行。但是我希望它从特定目录中执行它,以便它可以找到所需的所有文件,因为该应用程序具有许多相对路径。

无论如何,我可以告诉crontab从特定目录运行吗?

Answers:


318

所有作业均由外壳执行,因此请通过命令启动该外壳片段以更改目录。

cd /path/to/directory && ./bin/myapp

关于&&代替代替的使用;:通常没有什么区别,但是如果cd命令失败(例如因为目录不存在),&&则不执行该应用程序,而;执行该命令(但不在预期目录中))。


除了添加一个几乎不重复的答案外,让我补充一下,您可以通过SHELL在crontab中进行设置来选择哪个shell(例如,如果需要bash而不是sh)。
Edd Steel 2012年

12
+1。其他所有相关问题的解决方案都是使用绝对路径重新编写脚本。这正是我所需要的
Conrad.Dean 2012年

2
出于好奇,您可以使用分号;代替双“&”号&&吗?还是行不通?又为什么呢
约书亚·品特

32
@JoshPinter通常,它没有什么区别。但是,如果cd命令失败(例如,因为目录不存在),则使用&&不会执行该应用程序。使用;,它被执行(但不在预期目录中)。
吉尔斯(Gilles)'所以

1
我将对我的应用程序的所有cron作业执行此操作,您使我免于更改源文件,非常感谢您
会计师م
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.