我正面临一个亟待解决的问题。 我写了一个bash脚本来获取应用程序的状态。 脚本运行正常,当我从shell执行它,但是当我试图从crontab执行相同的脚本它不工作。 不知道这里发生了什么…
手动和cron都从根帐户运行。
这通常是因为cron不能像shell那样启用PATH。 尝试在提示符处input“echo $ PATH”。 取出生成的PATHstring,并将其添加到crontab文件的顶部PATH =这可能会解决它。
标记
Root可能会收到解释错误的电子邮件。 检查根目录的邮件,或者将MAILTO设置为文件顶部的其他地址。
除了一个不同的PATH的可能性,请注意, crontab有一些有点怪异的转义规则。 特别是, %变为换行符,第一个%之后的字符变成命令的标准符号。
@ mfarver已经回答我只想补充:
在启动时运行的任何脚本都不会设置PATH envvariables。 除非导出PATH,否则必须调用所有使用完整path的命令。 每当你创build一个简单的添加export PATH=$PATH:/bin:/usr/bin:/usr/local/bin的时候,你应该没问题。 当然,如果你需要在这个path中的其他文件夹,添加它们。 我不想让这个答案,因为@ mfarver已经是正确的,但我没有足够的观点来简单地添加评论:)。