linux基础(四)——任务调度cron和anacron

crontab定期执行shell脚本

【场景】:

需要定期运行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

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

猜你喜欢

转载自blog.csdn.net/weixin_41988628/article/details/81136169