当前位置:  技术问答>linux和unix

一进进程在使用crontab中报少了库:libclntsh.so.9.0

    来源: 互联网  发布时间:2015-09-15

    本文导语:  我开发一个进程 ,进程调用和运行都没有问题,然后我就写了个shell脚本,这个脚本是检测进程是否存在,要是没有存在的话就启动进程,然后我把shell脚本放在crontab里面五分钟检测一次,但进程不存在而要启动时...

我开发一个进程 ,进程调用和运行都没有问题,然后我就写了个shell脚本,这个脚本是检测进程是否存在,要是没有存在的话就启动进程,然后我把shell脚本放在crontab里面五分钟检测一次,但进程不存在而要启动时提示:
error while loading shared libraries:libclntsh.so.9.0:cannot open shared object file:No such file or directory

但直接运行脚本是不会报错的!!


我以前遇到同样的一次,哪次是使用exec()调用的,也有同样的问题,但哪次使用别的使用编译后就没有问题了,不过我现在不知道怎么编译了,我想请教这个问题是怎么引起的,我该怎么解决?

|
libclntsh.so.9.0 这个库是oracle 9i :OCI客户端运行时库,如果程序使用了oci读写数据库必定会装载这个库,它一般在//product/9.x.x/lib,除非你没有安装oracle客户端的话(在安装时),就会出现找不到这个库这个问题。

如果安装了,那么程序运行时还是要在/etc/ld.so.conf所列路径下、和LD_LIBRARY_PATH所列路径下 去寻找这个库,如果这两个地方都找不到就会报错,说找不到这个库。我估计你的/etc/ld.so.conf下肯定没有包含//product/9.x.x/lib这个路径,但你的用户shell启动脚本(.bash_profile)设置了
LD_LIBRARY_PATH=//product/9.x.x/lib:...这个环境变量,所以你用用户账号运行程序是没问题的。但crontab有自己的用户账号,crontab运行时并不会设置LD_LIBRARY_PATH=//product/9.x.x/lib: 。所以就找不到库了。

解决办法就是:将//product/9.x.x/lib路径加入/etc/ld.so.conf,并运行ldconfig -v(更新动态加载器缓存)就ok了。

|
没错啊,你不是已经解决了吗?

|
顶一下,看看先……

|
是不是crontab有问题?你随便搞一个脚本,看看是否能正确执行?

|
把你的crontab文件里面的启动条目贴出来看看先……

|
设置LD_LIBARAY_PATH

|
FreeBSD下面的crontab里面多了一个参数,用来控制启动的用户的,可惜这里没有,真得无语了……

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 好久没有启动RH9了,今天一进系统到了登陆画面,键盘鼠标全不能用了??
  • 用root 一进eclipse 就死,求大救救我吧~~
  • 请问如何在一进入JTable表格单元格的编辑的时候,触发一个事件。
  • 命令从那里输入?我的redhat9.0一进去就是窗口界面,非命令界面(在线)
  • 我在家装了REDHAT 8。0,但是被我配显卡的时候把水平刷新率调高了,现在一进系统就黑屏幕,
  • Linux下如何得到某一进程序CPU占用率????


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3