作为一名数据开发工程师,定时任务调度是日常工作中必不可少的,在日常工作中可能会遇到如下问题:
run.sh 启动脚本,可能依赖诸多脚本,如下为我的脚本依赖
-
[xxxxxxxxxxxx]$ more run.sh
-
#!/bin/bash
-
-
source ./config.sh
-
source ./launch.sh
-
source ./log_print.sh
-
source ./load_hive_func.sh
-
source ./tools.sh
如果我的定时任务如下方式写的话,会报找不到
config.sh, launch.sh 等文件
-
10 11 * * * sh /home/xxxx/xxxx/run.sh > /home/xxxx/xxxx/xxxx.log
原因很简单,我加的定时任务去执行的时候,其实当前路径就是我的家目录,也就是/home/xxxx, 但是我脚本里去./找,也就是当前目录找,当热找不到这些文件了,但是,我不能吧路径写死啊,因为假如B同学clone了我的代码,放在别的目录,那写死的路径就是噩梦。。。。。。
如何解决这一问题呢,其实很简单,就是代码一点都不用改,直接修改定时任务就行,方式如下:
-
10 11 * * * cd /home/xxxx/xxxx/ && sh run.sh > /home/xxxx/xxxx/xxxx.log
定时任务中先切换目录,在去执行,这时候不管你把代码放在哪个目录,都不会在报文件找不到的问题了!
阅读(6959) | 评论(0) | 转发(0) |