Chinaunix

标题: linux下使用cron无法定时执行kettle任务[已解决] [打印本页]

作者: 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


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



    赋予run_job.sh执行权限吗?
作者: jtootl    时间: 2011-01-27 15:51
回复  jtootl


    检查JOB所涉及到的文件,所有的文件写全路径,要用到的环境变量用source引入到环境 ...
shileiadmin 发表于 2011-01-27 15:35


“要用到的环境变量用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



    可以生成日志,一切正常。
作者: ly215197    时间: 2011-01-28 15:06
赋予run_job.sh执行权限吗?
jtootl 发表于 2011-01-27 15:49



    对,在编辑crontab后重新赋予脚本执行权限在测试下看!
作者: jtootl    时间: 2011-01-28 17:35
对,在编辑crontab后重新赋予脚本执行权限在测试下看!
ly215197 发表于 2011-01-28 15:06



    试过啦,不中。。我很郁闷
作者: 300second    时间: 2011-02-03 10:17
crontab -e后重新赋予执行权限再试下
作者: hwej99    时间: 2014-08-20 17:18
请问该问题如何解决的?
作者: xc20494580    时间: 2017-08-22 11:02
据我所知,国内有款ETL调度监控工具TaskCTL,支持kettle还不错。可以跨平台分布式调度kettle。
Linux/Windows端的kettle都可以调。包括自动定时/排程,人工干预等调度方式。好像还没有一款软件能在图形监控上超过它,肯定比起其它的监控方案强多了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2