我正在使用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
保守党!