jtootl 发表于 2011-01-27 10:52

linux下使用cron无法定时执行kettle任务[已解决]

本帖最后由 jtootl 于 2011-02-11 14:52 编辑

问题描述:
在linux下,使用cron定时执行其他命令,如echo一个字符串到一个文件,没有任何问题。
但定时执行kettle的kitchen.sh时就出问题啦,如果直接在命令行里使用kettle的kitchen.sh执行任务就完全正常。

我的操作步骤如下:
1.在命令行键入crontab -e
2.写入如下命令:
42 10 26 01 * /mnt/kettle/run_job.sh
保存,重启crond服务。
/mnt/kettle/run_job.sh的内容为
/mnt/kettle/kettle_3.2/kitchen.sh -file=/mnt/kettle/job/xxx.kjb -level=Basic > /mnt/kettle/display.log
3.等待
4.查看结果
/mnt/kettle/display.log文件生成,但是里面没有任何输出,而且xxx.kjb的任务没有执行效果

于是我就继续调试,
我的调试步骤如下:
1.编辑在/mnt/kettle/kettle_3.2/kitchen.sh,
即vi /mnt/kettle/kettle_3.2/kitchen.sh
在每个主要代码块后添加echo "xxx",打印一些内容,看是否是kitchen.sh内代码的问题

2.添加上面所说的定时任务
3.等待
4.查看结果
/mnt/kettle/display.log文件生成,里面有输出,就是我在kitchen.sh里添加的那些echo,一个不少,但是xxx.kjb的任务依旧没有执行效果
5.查看kettle自己的执行错误日志
错误日志大小为0,没有任何错误


请问各位大大,谁遇到过这个情况,指点下小弟,谢谢啦!
PS:我使用的是kettle 3.2版本

-------------补充描述
根据4楼ly215197 的建议,我在添加完定时任务后,给.sh文件重新赋予了执行权限
这是crontab -e的截图



保存完定时任务,我重启crond服务,重新赋予.sh执行权限,如图



根据5楼shileiadmin (Lei) 的建议,我把我的job里的路径换成了绝对路径,如图

至于“要用到的环境变量用source引入到环境中来”,我不会改。

做了这些改动以后,结果依然如前,问题没有解决。

请大大们继续指点!

------------解决方案
linux下使用crond定时执行kettle的job
http://www.blogjava.net/orangehf/archive/2011/02/11/344045.html

taojie2000 发表于 2011-01-27 11:21

-log=........可以吗 !

jtootl 发表于 2011-01-27 13:23

-log=........可以吗 !
taojie2000 发表于 2011-01-27 11:21 http://linux.chinaunix.net/bbs/images/common/back.gif

run_job.sh里,添加了-logfile=xxxxx
/mnt/oradata/kettle/kettle_3.2/kitchen.sh -job=/mnt/oradata/kettle/Job/test_cron_job.kjb -level=Detailed -logfile=/mnt/oradata/kettle/run_job_log.log

没有logfile生成,也没执行job。。
继续求救!~~

ly215197 发表于 2011-01-27 14:57

crontab -e后重新赋予执行权限在试下呢?

shileiadmin 发表于 2011-01-27 15:35

回复 1# jtootl


    检查JOB所涉及到的文件,所有的文件写全路径,要用到的环境变量用source引入到环境中来。

jtootl 发表于 2011-01-27 15:49

crontab -e后重新赋予执行权限在试下呢?
ly215197 发表于 2011-01-27 14:57 http://linux.chinaunix.net/bbs/images/common/back.gif


    赋予run_job.sh执行权限吗?

jtootl 发表于 2011-01-27 15:51

回复jtootl


    检查JOB所涉及到的文件,所有的文件写全路径,要用到的环境变量用source引入到环境 ...
shileiadmin 发表于 2011-01-27 15:35 http://linux.chinaunix.net/bbs/images/common/back.gif

“要用到的环境变量用source引入到环境”,如何用source。。望指教

jtootl 发表于 2011-01-27 16:51

请看楼主补充描述!

beyondfly 发表于 2011-01-28 10:37

手动执行那个脚本,可以执行,可以生成日志吗?

jtootl 发表于 2011-01-28 11:19

手动执行那个脚本,可以执行,可以生成日志吗?
beyondfly 发表于 2011-01-28 10:37 http://linux.chinaunix.net/bbs/images/common/back.gif


    可以生成日志,一切正常。
页: [1] 2
查看完整版本: linux下使用cron无法定时执行kettle任务[已解决]