守护进程启动的脚本找不到共享库

守护进程启动的脚本找不到共享库

我正在使用extend指令扩展 snmpd 来为某些 OID 调用一些脚本。该脚本本身调用一个自定义帮助程序来提取一些值。从命令行手动启动时,帮助程序运行良好,但是当我在脚本中调用它时,它不起作用,因为它无法在/cots/boost-1.55/lib.我已添加/cots/boost-1.55/lib/etc/ld.conf.d/cots.conf在运行后ldconfig验证升压库是否在缓存中。该脚本基本上包含

result=`callHelper with arguments`
echo $result

结果被 snmpd 捕获并返回。当我查询 OID 时,出现错误,指出找不到外部 boost 库。

我能够通过调用su user脚本来使其工作

result=`su user "callHelper with arguments"`
echo $result

任何人都可以解释为什么 ld 缓存在使用时是正确的su,但在直接编写程序脚本时却不正确?我认为这与 snmpd 是系统服务因此环境不同但ldconfig不是环境的一部分有关。

答案1

检查一下您的库是否在您的搜索路径中。在 TERM 中运行以下命令来检查您的全局路径。路径是使用.profile非配置设置的。

echo $PATH$ 

查看您的搜索路径。要将您的库显式添加到搜索路径,请使用术语中的“set”命令。美元符号表示这是对 shell 的全局调用。尝试

set PATH=$PATH$;/cots/boost-1.55/lib

分号告诉 shell 开始一个新的搜索路径。但是,这仅在搜索路径存在时才有效。当然它在我的机器上分叉

set PATH=$PATH$;/cots/boost-1.55/lib
bash: /cots/boost-1.55/lib: -forks No such file or direc

保守党!

相关内容