crontab -e
00 11 * * * /atmd/etltasks/gmd/gn-flow.sh 2>&1 > /atmd/etltasks/gmd/gn.log
直接脚本执行时是ok的,但是通过crontab总觉得没有执行,log还是原来的log,原因在于只是把执行脚本的路径写成全路径了,而日志文件的路径却没写完整,而这里crontab并没有报错找不到文件!
如果还是觉得crontab没有工作,可以尝试启动服务:
service crontab start
crontab -l查看定时任务列表
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)
H:小时(0-23)
D:天(1-31)
m: 月(1-12)
d: 一星期内的天(0~6,0为星期天)
crontab执行有hadoop命令的脚本报错,直接执行ok
脚本t2.sh内容
这里定义path路径时,在前面的$PATH里找到了软连接路径 /usr/bin/hadoop,就不再去找下面的
#!/bin/bash
#. ~/.bash_profile
#HADOOP_HOME=/atmd/hadoop
#PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#export PATH
hadoop fs -ls /home/tme | awk '{print $8}'
下面是按照 先cd 再进入: 报错
在脚本里加入hadoop的环境变量重新定义PATH :报错
在脚本里导出PATH的路径 export PATH :报错
在脚本里增加 ~/.bash_profile : ok (里面有定义环境变量)
HADOOP_HOME=/atmd/hadoop
SQOOP_HOME=/atmd/sqoop
export JAVA_HOME HADOOP_HOME ZOOKEEPER_HOME SQOOP_HOME
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:$ZOOKEEPER_HOME/bin:/atmd/node/bin:/atmd/
python2/bin:$PATH:$HOME/bin
export PYTHONPATH=/atmd/python3_env
export REDASH_LOG_LEVEL="INFO"
export REDASH_REDIS_URL=redis://localhost:6379/0
export REDASH_DATABASE_URL="postgresql:///redash"
export REDASH_COOKIE_SECRET=ogEs7A15i9jXxTZSouYwg8M9B1vVCHXe
export PATH
错误信息:
/usr/bin/hadoop: line 27: /usr/bin/../libexec/hadoop-config.sh: No such file or directory
/usr/bin/hadoop: line 166: exec: : not found
其实上面的写法没有错,错在这里建立了软链接