我有一个脚本运行良好,如果我从命令行使用Bash调用它。 但是,当cron试图运行它,它会失败,“mysql:command not found”错误。
我认为这是因为cron没有使用bash,因为它的shell,但我不知道如何使cron使用bash。
我试图将其添加到脚本的顶部:
#!/bin/bash
但没有喜乐。 我如何强制cron使用bash作为shell? 我对bash和cron很陌生,所以我可能会错过简单的东西。 我读了几个serverfault文章(将链接到他们所有,但我不能,新用户),试图理解和应用信息尽我所能,再加上googlesearch,但卡住了。
Pulegium是正确的,它不是那种types的壳是问题,它是path。 当cron运行时,它有一个非常有限的searchpath,而不是把mysql放在你的命令中,你应该把/path/to/mysql放到可执行文件的实际path中。 通常像/usr/local/bin/mysql 。 你必须search它才能find确切的path。 另外,如果是shell问题,在你的cron文件中,你可以运行bash,然后运行你的脚本: /bin/bash /path/to/script.sh ,这将确保bash是处理文件的那个。
最好在cron脚本中使用绝对path命令。 所以你不要依赖你可能定制的任何PATH设置。