【场景】:

需要定期运行Hadoop的MapReduce

【解决办法】:

编写一个运行MapReduce的Shell脚本。然后使用crontab配置定时任务。

【Shell脚本】

#!/usr/bin/env bash
source /etc/profile
echo "TimeLimitDrawn Start"
hadoop jar $HADOOP_HOME/package/mr_post-1.0-SNAPSHOT-jar-with-dependencies.jar com.hdyh.mapreduce.TimeLimitDrawn >> /home/hadmin/hadoop/shell/mr.log
echo "TimeLimitDrawn End"

【定时任务】

*  *  */1  *  *  sh /home/hadmin/hadoop/package/TimeLimitDraw.sh

【crontab使用说明】

crontab –u    //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab –l     //列出某个用户cron服务的详细内容
crontab –r    //删除某个用户的cron服务
crontab –e    //编辑某个用户的cron服务

crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间
①分钟(0-59)
②小时(0-23)
③日期(1-31)
④月份(1-12)
⑤星期几(0-6,其中0代表星期日,好像7也代表星期日)
⑥一个要在适当时间执行的字符串。

例子:
#MIN      HOUR     DAY       MONTH  DAYOFWEEK       COMMAND
#每天早上6点10分
10    6     *     *     *     date

#每两个小时
0     */2   *     *     *     date

#晚上11点到早上8点之间每两个小时,早上8点
0     23-7/2,8      *     *     *     date

#每个月的4号和每个礼拜一到礼拜三的早上11点
0     11    4     *     1-3  date

#1月1日早上4点
0     4     1     1       *  date

让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后,也要重新启动cron服务器。

注意:如果要定期执行某个Shell命令的时候,一定要注意以下两点:

①、shell脚本要有-x(可执行)的权限

②、shell脚本可以被正确执行,但是hadoop命令无法运行时,多数情况都是因为环境变量的原因,可以在Shell脚本中使用source /etc/profile来使环境变量生效。

③、如果设置的是整点运行,按照下面错误的写法,会在7点开始执行很多次命令。

错误的写法:*  7  *  *  *  sh /home/hadmin/hadoop/package/TimeLimitDraw.sh

正确的写法:0  7  *  *  *  sh /home/hadmin/hadoop/package/TimeLimitDraw.sh

④、有时因为找不到文件或者权限问题无法正确执行时,系统会生成一个文件【/var/spool/mail/[用户名]】、 如:/var/spool/mail/root

在这个文件中有时可以找到一些有用的线索。

--end--

crontab定期执行shell脚本的更多相关文章

  1. linux crontab定时执行shell脚本

    linux下使用crontab命令被用来提交和管理用户的需要周期性执行的任务,示例如下:crontab -e 编辑周期任务30 21 * * * /etc/init.d/smb restart 每晚的 ...

  2. crontab定时执行shell脚本失败的原因

    有一段时间不用crontab定时执行任务了,这次趁着项目实施的机会来进一步分析一下crontab定时任务设置时遇到的一些棘手的问题. crontab -l 查看目前已经设置的crontab信息 cro ...

  3. linux下crontab定时执行shell脚本调用oracle 存储过程

    问题:脚本内调用存储过程,脚本直接执行没问题,使用crontab 执行脚本存储过程未执行 原因:缺少oracle环境变量 解决:在shell脚本里添加oracle的环境变量 #!/bin/sh PAT ...

  4. 在crontab中执行shell脚本的问题

    crontab中记录的编写比较简单,下面是一个示例: * * * /app/tpssapp/ftpsrc/tools/statTables/statTables.sh > /app/tpssap ...

  5. crontab定时执行shell脚本

    步骤一    首先我们先看一下是否安装了crontab.一般情况下linux系统会自带crontab及crond.如果没有安装,请使用以下指令安装:yum install vixie-cron     ...

  6. 解决命令行执行shell脚本成功,但crontab执行失败

    实际生产案例 生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号 会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP) #! ...

  7. mac上使用crontab周期性执行python脚本

    这个月买了本书<Linux系统命令及Shell脚本实践指南>, 看到了一个周期性执行任务cron.顿时产生一个想法: mac上有这种机制么? 加上自己也在15年下半年也学了点python脚 ...

  8. Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  9. Linux中执行shell脚本的4种方法

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

随机推荐

  1. mstsc遇到CredSSP加密Oracle修正

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\P ...

  2. GOF23设计模式之桥接模式(bridge)

    一.桥接模式概述 桥接模式核心要点: 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联. 二.桥接模式场景提出与存在问题 商城系统中常见 ...

  3. k8s1.4.3安装实践记录(3)下载基础镜像

    下载基础镜像,因为Google被墙,所以我们用时速云中的镜像来tag docker pull index.tenxcloud.com/google_containers/pause-amd64:3.0 ...

  4. 【转】如何使用JMeter测试Java项目

    一. Apache JMeter工具 1)简介 JMeter——一个100%的纯Java桌面应用,它是 Apache组织的开放源代码项目,它是功能和性能测试的工具.JMeter可以用于测试静态或者动态 ...

  5. Julia - If 条件语句

    Julia 中使用 if,elseif,else 进行条件判断 格式: if expression1 statement1 elseif expression2 statement2 else sta ...

  6. 25行 Python 代码实现人脸检测——OpenCV 技术教程

    这是篇是利用 OpenCV 进行人脸识别的技术讲解.阅读本文之前,这是注意事项: 建议先读一遍本文再跑代码——你需要理解这些代码是干什么的.成功跑一遍不是目的,能够举一反三.在新任务上找出 bug 才 ...

  7. DataSnap 连接池 DSServer1Disconnect

    DataSnap Server DSServer1Disconnect 这个函数什么时候执行? void __fastcall TServerContainer1::DSServer1Disconne ...

  8. 更改AD域安全策略-密码必须符合复杂性要求

    在域环境中,修改域用户密码时,会提示不符合密码策略, 更改"本地安全策略"是不会对域产生任何的作用的. 上图中可以看,这里按钮都是灰色的! 下面这个步骤教你如何找到"域安 ...

  9. hibernate中 criteria.setProjection(Projections.rowCount()).uniqueResult()为null的Bug

    在hibernate中,在查询总数时,会使用如下方法; public Integer getCount(final DetachedCriteria detachedCriteria) {       ...

  10. 改bug的乐趣

    一直以来,我都不喜欢改bug,不管是自己的,还是别人的.因为我不相信自己的代码会出现问题,一旦出现问题我就会觉得很难堪,因为我觉得我的代码没什么问题.然后我就不知道该怎么来解决这些问题. 最近这一两次 ...