Bash脚本在通过cron运行时失败,找不到Libboost库

时间:2011-10-27 14:32:25

标签: bash boost cron

我正在运行一个使用libboost在内存中保存统计模型的bash脚本。当我直接从命令行运行脚本(即:#/ pylda / exec-test.sh)时,它工作正常。但是,当它在cron作业上运行时,我收到以下错误:

"/root/pylda/src/infer: error while loading shared libraries: libboost_program_options.so.1.46.1: cannot open shared object file: No such file or directory"

cron的行为有何不同?是否需要设置环境变量?据我所知,这是作为root的cron。

由于

4 个答案:

答案 0 :(得分:2)

检查您的LD_LIBRARY_PATH环境变量?

答案 1 :(得分:1)

作为一般性评论,当您使用cron()脚本时,不要依赖通常在交互(登录)会话期间存在的环境变量。某些实现仅定义最小环境。您可以在脚本中包含所需的所有内容,或者通过在其中直接声明,或者通过获取所需变量的文件。

答案 2 :(得分:1)

即使这是旧的,我认为这个答案可能对其他人有所帮助。

这是我的crontab的示例行:

0 3 * * 1,2,4,5,6 (. /home/oracle/.profile; export ORACLE_SID=myDB;. myscript.ksh parm1 parm2; ) 1>/dev/null 2>&1

其中: 执行我的用户(oracle)的配置文件,所以我相信我有良好的环境: /home/oracle/.profile 设置本地env值:export ORACLE_SID = myDB 用它的参数执行脚本: myscript.ksh parm1 parm2(nota:点因为脚本没有x标志) 不发送电子邮件:1> / dev / null 2>& 1(我的脚本使用格式发送所需的电子邮件)。

使用()括起命令列表,使用分号(;)分隔命令。

希望这有助于......

答案 3 :(得分:0)

尝试在Cron脚本上设置PATH var

# /etc/cron.d/something
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin