我有一个脚本,我每 10 分钟调用一次 cronjob:
*/10 * * * * ~/mydirectory/myscript.sh
现在,里面~/mydirectory还有另一个脚本,让我们说myotherscript.sh我想从里面调用哪个myscript.sh。两个脚本都被chmod设置为可执行,当我myscript.sh从命令行执行时,~/mydirectory一切正常。我按如下方式执行它:
. 脚本文件
但它看起来不像 cronjob 工作。当我从主脚本中删除对第二个脚本的引用时,它仍然有效,所以我怀疑我引用第二个脚本的方式有问题。这是内容的myscript.sh样子:
#! /bin/bash
do-something
do-something-else
. myotherscript.sh
Run Code Online (Sandbox Code Playgroud)
是不是当cronjob 运行时,当前目录不是~/mydirectory,所以cronjob 找不到该myotherscript.sh文件?如果是这样,我如何让它看到文件?我不想在主脚本中指定绝对路径,因为我可能想myotherscript.sh在某个时候将它(和)移动到另一个目录,或者我可能想~/mydirectory在某个时候重命名,然后我不想更改内容myscript.sh以引用新的绝对路径。
额外问题:现在,当需要执行 cronjob 时,我基本上只是抱着大拇指并希望最好,但我无法看到它是否成功,如果失败,为什么失败。关于如何查看 cronjob 未按预期执行的任何提示?
好的,所以 glenn jackman 的回答有效,它也回答了我的奖金问题,但我后来想出了另一个我认为更优雅的方法来确保 cronjob 在脚本所在的目录中运行。
只需更换
*/10 * * * * ~/mydirectory/myscript.sh
Run Code Online (Sandbox Code Playgroud)
和
*/10 * * * * cd ~/mydirectory && ./myscript.sh
Run Code Online (Sandbox Code Playgroud)
这解决了问题。一切正常。