Chinaunix首页 | 论坛 | 博客
  • 博客访问: 283633
  • 博文数量: 70
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-12 20:22
个人简介

1.01^365=37.8 0.99^365=0.03

文章分类

全部博文(70)

文章存档

2017年(9)

2016年(4)

2015年(14)

2014年(43)

我的朋友

分类: 其他UNIX

2014-02-26 22:03:17

问题描述:crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题,在$home/.profile中设定了脚本所需要的环境变量。

cron命令的默认shell是/bin/sh,如果要在cron启动的脚本中使用ksh,就必须在脚本中的第一行添加“!/bin/sh”的声明。

如果cron进程启动的shell脚本设置了用户登录时的环境变量,就必须在cron启动的shell脚本中添加下面的内容,才能够在启动的脚本中使用$home/.profile文件中的环境变量。

在shell中加载一个文件可以用.和source两种方式,即
. $home/.profile(用户环境变量) 或者 source /etc/profile(系统环境变量)
这是因为cron进程执行的shell脚本是不会自动加载用户目录下的.profile文件,所以需要脚本自己加载所需要的环境变量。

crontab环境变量的问题:

crontab是进行例行性工作常用的命令,比如系统备份,编写一个备份的shell脚本后,使用crontab定时执行这个备份脚本,就可实现自动备份了。将备份时间设置在三更半夜系统访问量小的时候,既不会影响系统日常使用,也不用派人盯着,第二天看一下邮件,检查一下执行结果就好了。这里就不描述如何使用crontab了,这些资料网上一大把,下面将我使用crontab曾经犯过的几个错误和大家分享一下

1.使用普通变量

crontab执行shell时只能识别为数不多的系统环境变量,普通变量是无法识别的,如果在编写的脚本中需要使用变量,需要使用export将变量声明为环境变量,脚本才能正常执行。

2.使用相对路径

crontab执行shell时,是不会进入到shell脚本所在的路径下执行的,如果shell里含有相对路径的话,会找不到路径的,因此shell脚本中都要使用绝对路径。

3.权限设置错误


权限问题永远是linux需要注意的问题,一定要确保crontab的执行者(/etc/crontab文档设置的第二项)有访问shell脚本所在目录并且执行此shell的权限(可使用chomd和chown修改权限和所有者)。


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