脚本在由 cron 运行时的行为有所不同

脚本在由 cron 运行时的行为有所不同

我有一个每晚运行的脚本,它返回的结果与我手动运行的结果不同。我意识到这是一个常见问题,我的问题很可能在于运行 cron 时未获取的环境变量。

我已将 PATH 手动添加到 crontab 的开头,并添加了以下行

. ~/.bash_profile

到脚本的开头。还可能发生什么?

答案1

至少你尝试过。

我同意这很可能是一个环境问题,而了解你真正使用的环境的最佳方法是将环境捕获到文件中,然后对它们进行区分,因此..添加

set > /tmp/myEnvrionrment.$$

就在你的

. ~/.bash_profile

编辑

.$$附加到 /tmp 文件名的变量是 Shell 的“当前进程 id”变量,因此是一个相对唯一的数字,每次运行脚本时都应该不同。J)

从 cmd 行运行脚本,然后从 cron 运行

然后

diff /tmp/myEnvrionemnt.*

假设那里只有两个文件,否则,查看这些文件上的时间戳并删除其他文件,这样您就只有 2 个文件,1 个代表 cmd 行运行,另一个代表 crontab 运行。

set所示,局部变量(应包括导出变量),这应该可行。如果在两个输出文件中都获得相同的列表,则尝试

export > /tmp/myExportedVars.$$

如上所述,并尝试比较它们。

不仅要查看 PATH,还要查看 LD_* 变量和 LANG 变量。

免疫学和免疫学研究所

相关内容