有没有专业做淘宝网站,成都的网站建设开发公司哪家好,出口外贸网站建设,网站建设项目职责一、出现的问题
有一个守护脚本XXX.sh#xff0c;需要使用oracle用户在linux上配置定时任务#xff0c;每1分钟检查执行一次。但是发现该脚本使用oralce用户手动启动没问题#xff0c;能正常把程序启动起来#xff0c;而使用crontab并没有把程序启动起来。
二、排查分析问…一、出现的问题
有一个守护脚本XXX.sh需要使用oracle用户在linux上配置定时任务每1分钟检查执行一次。但是发现该脚本使用oralce用户手动启动没问题能正常把程序启动起来而使用crontab并没有把程序启动起来。
二、排查分析问题
1.程序本身是否有问题
通过使用nohup命令发现程序能够正常执行说明程序本身没有问题。
2.脚本是否有问题
既然能手动执行脚本把程序启动起来说明脚本本身没有问题。
3.定时任务是否有问题
编辑定时任务 crontab -e
*/1 * * * * sh /home/oracle/XXX.sh /tmp/test.log在XXX.sh中加了一些打印定时任务重定向输出到test.log通过查看test.log日志如果有输出就说明执行了XXX.sh 脚本。
4.定时任务执行脚本时启动程序是否有问题
在XXX.sh脚本中加一下启动程序 标准错误重定向到标准输出的日志。
nohup XXXXX test2.log 21 通过查看 test2.log 日志发现报了没有加载到动态库的错误
error while loading shared libraries: libocci.so.19.1:cannot open shared object file: No such file or directory按道理讲用oracle用户启动怎么会加载不到libocci.so动态库呢很是郁闷。。。后来排查到是因为crontab执行的并非当前用户的环境。
三、原因和解决办法
1.原因
没有加载到动态库的原因是crontab 执行任务的时候并不会缺省的从用户profile文件中读取环境变量参数。从而导致定时任务执行脚本启动程序的时候报错。
2.解决办法
在脚本的开头加上如下两句让脚本执行环境是当前账户的配置文件。
#!/bin/sh
. /etc/profile
. ~/.bash_profile参考文章 Linux 中 Crontab 执行时的环境变量问题 Linux 指定用户执行 crontab 计划任务