在向cron进程提交一个crontab文件之前,必须配置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑cron文件。在UNIX和Linux用户都使用vi,如果你也是这样,那么你就编辑$HOME目录下的.profile文件,在其中加入这样一行:
EDITOR=vi ;export EDITOR
你必须保证$PATH目录中有vi编辑器,通过使用which vi来检查vi所在的目录,如果没有找到vi,那么你必须手动配置一个.
在/home/scada/目录下有一个脚本test,内容为:
#!/bin/sh
echo `date` >> /home/scada/11.txt
1. 如何配置脚本每隔1分钟运行一次?
#调用crontab -e 编辑,编辑内容为:
0-59 * * * * /home/scada/test
# */2 * * * * /home/scada/text
2. 如何配置脚本每隔5分钟执行一次?
#调用crontab -e 编辑,编辑内容为:
0-59/5 * * * * /home/scada/test
3. 配置为: 0,1 * * * * /home/scada/test是什么意思?
它表示每小时运行两次(整点及整点后两分钟)
4. 如何在crontab中使用全局变量?
有一个全局变量,在$home/.bash_profile文件中定义。定义为:
export TESTTMP=/home/scada
在crontab中执行的脚本如何获取这个变量呢?
把脚本内容改为:
#!/bin/sh
#filename:test
echo $TESTTMP >> /home/scada/11.txt
配置为一分钟运行一次,查看结果。发现文件/home/scada/11.txt中的内容为空,没有获取到$TESTTMP的数据,这是因为通过调用crontab调用脚本不会包含当前用户中的各种环境变量的设置,必须在脚本前设置好环境变量,而设置环境变量的方法可以使用source命令。因此正确的脚本调用为:
#!/bin/sh
#filename:test
#source /home/scada/.bash_profile
#switch the userpath
cd ~
userpath=`pwd`
source ${userpath}/.bash_profile
echo ${TESTTMP} >> /home/scada/11.txt
#echo $TESTTMP >> /home/scada/11.txt #不用打括号围起来也可以
或者通过crontab -e 编辑调度文件的时候,直接在里面制定全局变量,如下所示:
TESTTMP=/home/scada
0-59 * * * * /home/scada/test