crontab 解决环境变量不一致问题及注意事项

问题描述

今天写了一个hive cli合并小文件的shell,每天定时执行
但是确发现我手动执行可以,crontab执行就会报错127
所以应该果断的怀疑是环境变量的问题

问题解决

在脚本的第一行加入
source /etc/profile

其他

crontab 使用需要注意的事项

  • 一定要注意环境变量,因为crontab 不知道你所执行的命令所在的位置,最好在脚本的第一行加上source /etc/profile ,自己写的shell脚本要写绝对路径
  • 手动执行可以,但是自动执行报错,一定是环境变量的问题
  • 新创建的crontab 任务最好等2分钟再执行
  • crontab 的日志最好做一个定向的输出,否则会造成大量的日志堆积
  • crontab 通常配置 >/dev/null 2>$1 来清除输出
    • > 表示重定向到哪里也就是输出到哪里
    • /dev/null linux的无底洞,输出到这里就相当于清空了,不占空间
    • 1 表示标准输出
    • 2 表示标准错误输出
    • & 表示等同于
    • >/dev/null 表示标准输出到空设备文件
    • 2>$1 表示标准错误输出和前面一样,也输出到空设备文件

你可能感兴趣的:(日常报错,linux,crontab)