我的 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
您的促销脚本中。