我正在努力调试无法正常工作的 cron 作业。 cron 作业调用一个 shell 脚本,该脚本应该解压一个 rar 文件 - 当我手动运行脚本时它工作正常,但由于某种原因它不能通过 cron 工作。我使用的是绝对文件路径,并已验证该路径是正确的。有没有人知道为什么会发生这种情况?
最佳答案
好吧,你已经说了你使用了绝对路径,所以第一个问题就解决了。
接下来要检查的是权限。 cron 作业以哪个用户身份运行?它是否具有所有必要的权限?
然后,一个小技巧:如果你有一个失败的 shell 脚本并且它没有在终端中运行,我喜欢将它的输出重定向到一些文件。在脚本的开头,添加:
exec &>/tmp/my.log
这会将 STDOUT 和 STDERR 重定向到 /tmp/my.log
。那么添加以下行也是一个好主意:
set -x
这将使 bash 打印它将要执行的命令,以及嵌套级别。
调试愉快!
关于linux - 帮助调试具有正确脚本路径并在手动触发时工作的 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3611812/