Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336616
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 09:21
文章分类

全部博文(39)

文章存档

2019年(18)

2018年(20)

2014年(1)

分类: LINUX

2018-08-24 12:40:26

问题描述:一个简单的登陆oracle数据库清理数据的脚本,手工执行正常,加入crontab中无法执行。

解决思路:脚本手工执行没有异常,排除脚本本身的异常,可以判断是脚本执行过程的问题,从以下几个方面来排查:

  • 权限问题:检查当前文件是否有执行权限,检查当前用户是否有权限执行脚本的一些需要较高权限的语句;
  • 路径问题:检查crontab执行时配置的脚本路径;
  • 环境变量:脚本执行时要与系统定义的环境变量来交互,如果脚本中引用了系统定义的变量没有加载环境变量,脚本执行就会失败;反之,如果脚本中没有引用系统定义的环境变量,不用加载也可以执行成功。

总结思考:实际工作中,环境变量是比较容易忽略的一个问题,大部分的脚本执行问题也都是环境变量的问题引起的,因此再脚本的开头加上环境变量的配置是很有必要的。当用户登陆到linux系统时,系统就会启动一个父shell进程,运行一个shell脚本时,系统将创建一个子shell,运行多个shell脚本,都会派生多少个子shell ,环境变量相当于子shell的全局变量,可以被所有的子shell引用,而shell脚本中定义的变量只是它的局部变量,只是在子shell中才有效 。

阅读(2140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~