我正在运行一个使用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。
由于
答案 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