linux 定时执行搅拌,Linux上定时shell脚本

本文主要介绍在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 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

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

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

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

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

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

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

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

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

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

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

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

Linux生产服务器Shell脚本分享

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

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

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

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

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

随机推荐

一些用过的我常忘记的小知识(web前端)

背景图片固定:background-attachment:fixed 将图片的尺寸从中心点开始改变:backgroun-position:center   background-size: ** 旋转 ...

更高效地提高redis client多线程操作的并发吞吐设计

Redis是一个非常高效的基于内存的NOSQL数据库,它提供非常高效的数据读写效能.在实际应用中往往是带宽和CLIENT库读写损耗过高导致无法更好地发挥出Redis更出色的能力.下面结合一些redis ...

C# 连接SQL数据库 常用连接字符串

一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...

R学习日记——分解时间序列(非季节性数据)

分解时间序列,就是将一个时间序列拆分成不同的构成元件.一般序列(非季节性序列)包含一个趋势部分和一个不规则部分(也就是随机部分),而如果是一个季节性序列,除以上两个外,还有季节性部分.   在此,我们 ...

PHP获取Post的原始数据方法小结(POST无变量名)

From : http://blog.csdn.net/hotdigger/article/details/6456240   一般我们都用$_POST或$_REQUEST两个预定义变量来接收POST ...

Python Django 实用小案例2

动态导入模块 Django返回序列化数据  动态导入模块 在Django里面,经常会看到一些方法或者类是动态导入,尤其是以settings文件为代表,经常把一些类放在里面动态调配,比如随便拿Djang ...

Spring Boot 整合mybatis-generator

Maven 引入 mybatis-generator插件 org.springf ...

mongodb从入门到精通

1.mongodb官网下载文件2.安装mongodb 3.配置安装成服务 4.记得连接的时候修改连接的ip地址 5.显示当前使用的数据库名——dbs 6.查找所有数据库——show dbs 7.查找所 ...

autocomplete 自动填充 combobox

目录(?)[-] autocomplete有两种 一种 是 jquery ui里的 autocomplete httpjqueryuicomautocomplete 另一种是 ASPNET AJAX ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值