免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3460 | 回复: 17
打印 上一主题 下一主题

shell程序在crontab中不能执行的问题,请大家帮个忙. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-16 18:49 |只看该作者 |倒序浏览
我不太懂LINUX, 最近由于工作需要,开始接触UNIX,因客户使用的是SOLARIS,也只能用这个.

在编写一个SHELL程序后,运行时出现了问题.在终端执行是没有问题的.

但是把这个SHELL程序定制到计划任务定点执行,就出问题了.不能产生数据.

代码如下:

for logfiles in /usr/omc/ne_data/ev_logs/ev*
do
    ev=`expr "$logfiles" : "...........................\(.\{10\}\).*"`
    if [ "$ev" = "ev2006111312" ]
    then
        evname=`expr "$logfiles" : ".........................\(.\{16\}\).*"`
        parsepath="/home/omcadmin/alarm_log/parsed_logs/"$evname
        /usr/omc/current/bin/cel $logfiles > $parsepath
        echo "ev log "$logfiles" parsed end"
    fi
done

在计划任务中定点执行后, 发现只是产生了0K大小的文件,并未产生数据,
后将错误输出为一个文件后发现是在执行到/usr/omc/current/bin/cel $logfiles > $parsepath时报的错.
错误为: ld.so.1:cel:fatal:libmmi.so: No such file or directory
计划任务设定为: 30 * * * * sh /home/parselog.sh
应该是CRON的环境变量不对,致使找不到文件, 但是应该怎样设置环境变量才可以运行呢?
我按照网上一些贴子提供的方法,如在crontab里面直接设置PATH=/.....,都不可行.
而且我使用的是全路径, 为什么还需要环境变量呢?

听说这儿高手如云, 哪位高手抽空帮忙解答一下?

注: cel为二进制应用程序

论坛徽章:
0
2 [报告]
发表于 2006-11-16 19:05 |只看该作者
如果您启动终端后需要使用环境变量文件来设定环境的话,那么在crontab用
  1. . setenvfile;/home/parselog.sh
复制代码
来调用,否则用
  1. . ~/.profile;/home/parselog.sh
复制代码
来调用。
总之就是要先找到当前所使用的环境。

[ 本帖最后由 一梦如是 于 2006-11-16 19:07 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-11-17 10:56 |只看该作者
我按上面的方法做了, 还是不行的.

论坛徽章:
0
4 [报告]
发表于 2006-11-17 13:52 |只看该作者
#!bin/sh
. /etc/profile
加这两行在代码上面

论坛徽章:
0
5 [报告]
发表于 2006-11-17 15:54 |只看该作者

注意的问题:

1 注意环境变量是否正确
2 注意crontab里面使用绝对路径

论坛徽章:
0
6 [报告]
发表于 2006-11-17 19:07 |只看该作者
加了
#!bin/sh
. /etc/profile
,还是不行.
我使用的就是绝对路径.
真是搞不懂UNIX咋这么难执行呢.

论坛徽章:
0
7 [报告]
发表于 2006-11-17 19:23 |只看该作者
弄清楚哪个文件是当前能正确执行程序的环境文件,SOLARIS一般是$HOME/.profile
想在crontab下执行,必须先将设定好当前环境。有且只有这一种可能导致您终端执行成功,但crontab执行不成功

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2006-11-18 10:55 |只看该作者
你在终端下在什么目录执行的cel?
在脚本中加一句cd 切换到那个目录试试

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2006-11-18 19:39 |只看该作者
將 #!/bin/sh 改為 #!/bin/sh -l 可以嗎?

论坛徽章:
0
10 [报告]
发表于 2006-11-20 16:22 |只看该作者
另外,这条出错的语句:
ld.so.1:cel:fatal:libmmi.so: No such file or directory
是指libmmi.so文件没有找到呢, 还是指ld.so.1, cel, fatal, libmmi.so这四个文件没有找到?
没搞明白它的明示.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP