Cronjob 运行一个调用另一个脚本的脚本

Cronjob 运行一个调用另一个脚本的脚本

我的 cronjob 看起来像这样:

0 3 * * 0-6 somedir/promotionscript

但promotionscript实际上是调用位于somedir的父文件夹中的另一个文件“config”。

#promotionscript
#!/bin/csh
source ../config

但我得到配置:没有这样的文件或目录。所以我认为 cronjob 没有在某个目录运行,因此一旦开始运行促销脚本,它就不知道某个目录。如何让 cronjob 在父文件夹中找到配置。

请注意,一种可能的解决方案是我可以添加配置的完整路径:

source fullpath/config

但是有没有办法让cronjob直接识别完整路径呢?

答案1

dirname从 shell 或 shell 脚本的名称中获取$0。然后做:

source `dirname $0`/../config

答案2

使用 cd somedir 确实如此,但不应将其添加到 Promotionscript,而应将其添加到 cronjob 以防止硬编码,例如:

0 3 * * 0-6 cd somedir;promotionscript

并且..操作员将按照促销脚本中的预期行事。

答案3

Cron 在您的主目录中运行命令。您可以添加到cd somedir您的促销脚本中。

相关内容