通过cron运行脚本时“找不到命令”

Modified on: Thu, 14 Jun 2018 08:06:53 +0800

我想在crontab中运行我的脚本,但是我遇到了一些问题......

在我的脚本中,我运行此命令:

db2 connect to myDB2

当我以db2inst1用户身份运行时,这很正常,但是当我在db2inst1 crontab中运行此脚本时,我得到了这个:

  

db2:找不到命令。

我该如何解决这个问题?

作者:jrg,Wolfy

最佳答案

为了避免必须输入命令的绝对路径,shell引入了$PATH环境变量,每个目录由:分隔,搜索从左边开始对。 cron经常清除整个环境,包括这个$PATH变量。因此,与shell中的行为相比,脚本在cron中的行为可能会有所不同。

使用绝对路径

which db2作为db2inst1用户运行,以获取db2程序的完整路径。如果输出是/usr/bin/db2,那么你的cron命令将如下所示:

/usr/bin/db2 connect to myDB2

设置PATH变量

echo "$PATH"用户身份运行db2inst1以获取$PATH变量并确保此变量在您的cron脚本中可用太。例如,如果输出是/usr/local/bin:/usr/bin:/bin,则将下一行放在shell脚本的顶部:

export PATH="/usr/local/bin:/usr/bin:/bin"
作者:,Lekensteyn

相关问答

添加新评论