原文链接: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. 【Robot Framework 】项目实战汇总

    写在前面 RF自动化的文章记录基本完成,建一个汇总目录,方便查看. [Robot Framework 项目实战]汇总 ∮[RF 项目实战 00]环境搭建 ∮[RF 项目实战 01]使用 Request ...

  2. HearthBuddy炉石兄弟 Method 'Entity.GetRace' not found.

    解决方案 namespace Triton.Game.Mapping{// Token: 0x020004A4 RID: 1188[Attribute38("Entity")]pu ...

  3. JS模拟Touch事件

    var ele = document.getElementsByClassName('target_node_class')[0] //may have x and y properties in s ...

  4. git仓库与项目源码分离

    在服务器上初始化git仓库 cd mkdir gitrepo cd gitrepo git init --bare runoob.git 本地 若是已经有git项目了,直接添加一个仓库地址就行了 gi ...

  5. 阿里云上搭建git

    这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...

  6. kotlin标准委托之可观察属性

    所谓可观察属性就是当属性变化时可以拦截其变化,实现观察属性值变化的委托函数是Delegates.observable.该函数接受二个参数,第一个是初始化值,第2个属性值变化事件的响应器.每次我们向属性 ...

  7. Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能

    Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能  Windows Server 2012 安装 SQL server 2008 出现了如下错误: 解 ...

  8. 一百三十:CMS系统之七牛js和python的SDK使用示例

    1.安装: pip install qiniu 2.编写获取uptoken的接口 @app.route('/uptoken/')def uptoken(): access_key = '' secre ...

  9. Spring事务管理2----编程式事务管理

    编程式事务管理 通过使用将Spring框架提供的TransactionTemplate模板注入到业务层来进行事务管理,这样对业务层原来的代码修改过多.不利于项目的后期维护. 以下是声明式事务管理的具体 ...

  10. 新式类__new__()方法

    概述 __new__() 是在新式类中新出现的方法,在 Python 中类实例化时,__new__()方法用在 __init__() 启动之前,决定是否要使用该 __init__() 方法,因为__n ...