原文链接:http://www.92coder.com/9-Linux定时shell脚本/#more

本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件

sql文件

-- 创建表
create table if not exists iot_test.iot_tac
(
MSISDN string,
TAC string
)
partitioned by(day string)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as parquet; --录入数据
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table iot_test.iot_tac
partition(day='${hivevar:day}')
select t4.MSISDN,t4.TAC
from
(select t1.MSISDN,t1.TAC from
(select MSISDN,substr(IMEI,1,8) as TAC,row_number()over(partition by MSISDN) as rn
from prestat.iot_activeuser_hour
where day='${hivevar:day}' and minute='${hivevar:minute}' and IMEI is not null) as t1
left join
(select MSISDN,TAC from iot_test.iot_tac where day='${hivevar:lmonth}') as t2
on t1.MSISDN = t2.MSISDN
where t2.MSISDN is null and t1.rn = 1
union all
select MSISDN,TAC
from iot_test.iot_tac
where day='${hivevar:lmonth}'
) as t4;
  • ${hivevar:day}

    接受shell脚本传来的参数day

shell脚本

#!/bin/bash
source /etc/profile
set -e
echo "**************************************************"
echo "**************************************************"
echo "*********************START************************"
echo "**************************************************"
echo "**************************************************"
day=$(date -d "today -5hours" +%Y%m%d)
minute=$(date -d "today -5hours" +%H00)
lmonth=$(date -d "last month -5hours" +%Y%m%d)
echo $day
echo $minute
echo $lmonth kinit -kt /home/secu01/cluster_keytab/secu01.keytab secu01 #调用sql
/usr/bin/hive -hivevar cmouth=${day} -hivevar cmouth=${minute} -hivevar lmouth=${lmonth} -f /iot_tac.sql echo "*************iot_tac.sql调用成功*************"
echo "***************all success****************"
  • #!/bin/bash

    指此脚本使用/bin/bash来解释执行
  • day、minute、lmonth

    定义的参数,传递给sql文件

部署定时

  • 第一步:将shell脚本和sql文件上传到Linux系统中,shell文件名:iot_tac.sh;sql文件名:iot_tac.sql
  • 第二步:更改shell脚本的权限
chmod u+x iot_tac.sh
  • 第三步:如果sql文件报错:/bin/bash^M: bad interpreter
sed -i "s/\r//" iot_tac.sql
  • 第四步:设置定时器

    (1)增加一个cron定时任务
crontab -e

(2)按insert键进入编辑模式

00 * * * * /home/zhangs/iot_tac.sh >/home/zhangs/log/iot_tac.log

表示每小时执行一次shell脚本,并生成日志文件

minute: 区间为 0 – 59

hour: 区间为0 – 23

day-of-month: 区间为0 – 31

month: 区间为1 – 12. 1 是1月. 12是12月.

Day-of-week: 区间为0 – 7. 周日可以是0或7.

(3)按esc键退出编辑模式,再按shift+:输入:wq保存并退出

Linux上定时shell脚本的更多相关文章

  1. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  2. Linux上使用shell脚本查看内存情况(超实用)

    #!/bin/bashexport chknum=1 #shell搅拌存放目录(输出日志文件执行后也存于该目录)echo 3 > /wls/wls81/shellsyncwhile [ $chk ...

  3. linux上使用shell脚本查看内存使用率

    如上的内存利用率 = [-/+buffers/cache:used]/[Mem:total ] =  6293404 / 16333656 对于free命令而言,有如下公式: total = used ...

  4. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  5. Linux下定时执行脚本(转自Decode360)

    文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 ...

  6. 实用脚本 2 -- Linux下定时执行脚本

    今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...

  7. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

  8. mac链接linux终端,shell脚本发布代码

    项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...

  9. Java代码调用服务器上的Shell脚本

    Java代码调用服务器上的Shell脚本 这里主要是因为我们报表平台有用到用户手工录入的数据作为结果数据且需要纳入saiku去展示 如我们所知,saiku不会自动刷新,所以需要在数据更新接口中调用服务 ...

随机推荐

  1. 访问redis集群提示连接超时的问题

    上周在服务器通过docker部署了一个单机版redis集群,今天通过StackExchange.Redis访问的时候报了这个错: 提示我把超时时间设置一下,我去服务器上找到redis的配置文件,发现不 ...

  2. vuejs是如何编译checkbox数组的v-model的

    随便用官方的例子编译了一下, 发现如下 _c("input", { directives: [ { name: "model", rawName: " ...

  3. windows下xampp安装rabbitmq的PHP扩展AMQP

    windows上使用的php扩展为dll文件,首先去下载dll文件,可以到 https://pecl.php.net/package/amqp 选择对应的版本下载 下载压缩包解压后,把里面的两个dll ...

  4. 4 个独特的 Linux 终端模拟器(转)

    4 个独特的 Linux 终端模拟器 译自:https://www.linux.com/blog/learn/2018/12/4-unique-terminals-linux作者: Jack Wall ...

  5. vue 组件之间通信

    父传子 **父组件代码** <template> <header-box :title-txt="showTitleTxt"></header-box ...

  6. Flask-Login详解

    Flask-Login详解 关于Flask登录认证的详细过程请参见拙作<<使用Flask实现用户登陆认证的详细过程>>一文,而本文则偏重于详细介绍Flask-Login的原理, ...

  7. Win7 双系统安装Centos7,并由windows引导程序引导

    1. 在windows磁盘管理中,压缩卷,腾出40G,需保证一个磁盘设备最多只有3个主分区2. 网上下载centos7的dvd.iso3. 使用UltraISO刻录到U盘4. 重启系统F12使用usb ...

  8. Navicat连接MySQL 8出现2059 - authentication plugin 'caching_sha2_password'的解决办法

    进入MySQL控制台,执行如下命令: use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ...

  9. 深度优先dfs与广度bfs优先搜索总结+例题

    DFS(Deep First Search)深度优先搜索 深度优先遍历(dfs)是对一个连通图进行遍历的算法.它的思想是从一个顶点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节 ...

  10. Hadoop学习笔记之二 文件操作

    HDFS分布式文件系统:优点:支持超大文件存储.流式访问.一次写入多次读取.缺点:不适应大量小文件.不适应低时延的数据访问.不适应多用户访问任意修改文件. 1.hadoop用于大数据处理,在数据量较小 ...