如果我使用 Bash 从命令行调用它,我有一个运行良好的脚本。但是当 cron 尝试运行它时,它会因为“mysql: command not found”错误而失败。
我认为这是因为 cron 没有使用 bash 作为它的 shell,但我不知道如何让 cron 使用 bash。
我尝试将其添加到脚本的顶部:
#!/bin/bash
但没有喜悦。如何强制 cron 使用 bash 作为它的 shell?我对 bash 和 cron 有点陌生,所以我可能会遗漏一些简单的东西。我阅读了几篇服务器故障帖子(将链接到所有帖子,但我不能,新用户)并尝试尽我所能理解和应用这些信息,加上谷歌搜索了很多,但被卡住了。
最好在 cron 脚本中使用命令的绝对路径。这样您就不会依赖您可能已自定义的任何 PATH 设置。
Pulegium 是对的,问题不是外壳类型,而是路径。当 cron 运行时,它的搜索路径非常有限,而不是
mysql
输入您的命令,您应该/path/to/mysql
输入可执行文件的实际路径。通常像/usr/local/bin/mysql
. 您必须搜索它才能找到确切的路径。此外,如果这是一个 shell 问题,您可以在您的 cron 文件中运行 bash 然后运行您的 script:/bin/bash /path/to/script.sh
,这将确保 bash 是处理文件的那个。