Chinaunix首页 | 论坛 | 博客
  • 博客访问: 278439
  • 博文数量: 127
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1018
  • 用 户 组: 普通用户
  • 注册时间: 2016-03-11 14:13
  • 认证徽章:
个人简介

狂甩酷拽吊炸天

文章分类

全部博文(127)

文章存档

2019年(25)

2018年(17)

2017年(35)

2016年(50)

分类: LINUX

2019-08-21 10:42:38

作为一名数据开发工程师,定时任务调度是日常工作中必不可少的,在日常工作中可能会遇到如下问题:
    run.sh 启动脚本,可能依赖诸多脚本,如下为我的脚本依赖
 

点击(此处)折叠或打开

  1. [xxxxxxxxxxxx]$ more run.sh
  2. #!/bin/bash

  3. source ./config.sh
  4. source ./launch.sh
  5. source ./log_print.sh
  6. source ./load_hive_func.sh
  7. source ./tools.sh
如果我的定时任务如下方式写的话,会报找不到config.sh, launch.sh 等文件

点击(此处)折叠或打开

  1. 10 11 * * * sh /home/xxxx/xxxx/run.sh > /home/xxxx/xxxx/xxxx.log
原因很简单,我加的定时任务去执行的时候,其实当前路径就是我的家目录,也就是/home/xxxx, 但是我脚本里去./找,也就是当前目录找,当热找不到这些文件了,但是,我不能吧路径写死啊,因为假如B同学clone了我的代码,放在别的目录,那写死的路径就是噩梦。。。。。。
如何解决这一问题呢,其实很简单,就是代码一点都不用改,直接修改定时任务就行,方式如下:

点击(此处)折叠或打开

  1. 10 11 * * * cd /home/xxxx/xxxx/ && sh run.sh > /home/xxxx/xxxx/xxxx.log
定时任务中先切换目录,在去执行,这时候不管你把代码放在哪个目录,都不会在报文件找不到的问题了!

阅读(3238) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册