Linux下的crontab定时任务配置和启动

安装crontab

[root@tingnan-DB3 tandelindata]# yum install crontabs

创建脚本文件

[root@tingnan-DB3 init.d]#  touch a.sh
[root@tingnan-DB3 init.d]# chmod 777 111.sh
[root@tingnan-DB3 init.d]#  vi 111.sh
/usr/bin/Rscript /tandelindata/ETL_code/R_oracle_mysql.R

添加定时任务

[root@tingnan-DB3 tandelindata]# crontab -e
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

*/6 * * * * ./home/test_shell/test2.sh  # 定时间隔6分钟执行一次

启动定时任务

[root@tingnan-DB3 tandelindata]# service crond restart   # 重启定时任务, 有restart和reload两个命令
[root@tingnan-DB3 tandelindata]# service crond status  # 查看执行报错情况 

列出定时任务列表

[root@tingnan-DB3 tandelindata]#  crontab -l   

查看运行结果

[root@tingnan-DB3 tandelindata]# tail -f /var/log/cron    # 执行日志查,发现

cron设置为在开机的时候自动启动

[root@tingnan-DB3 tandelindata]# vi /etc/rc.local
[root@tingnan-DB3 tandelindata]# /bin/systemctl start crond.service

其它常使用命令

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态

crontab -u //设定用户的cron服务
crontab -l //查看当前用户下cron调度内容
crontab -r //删除用户的cron服务
crontab -e //编辑用户的cron服务
crontab -i //打印提示,输入yes等确认信息

脚本原理:定时任务的每段为:分,时,日,月,周,用户,命令。例如:*/5 * * * * ./home/test_shell/test2.sh # 定时间隔5分钟执行一次

执行结果日志

[root@tingnan-DB3 tandelindata]# tail -f /var/spool/mail/root  # 执行结果日志

调度执行日志结果

111.sh脚本如下:

/usr/bin/Rscript /tandelindata/ETL_code/R_oracle_mysql.R

调度日志脚本结果如下:

[root@tingnan-DB3 ~]#  crontab -e

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

*/6 * * * * /bin/sh /home/111.sh

R语言程序脚本结果如下:

library(DBI)
library(RMySQL)
library(RJDBC) 
library(rJava)
### 创建Oracle数据库连接
setwd("//tandelindata//data_temp//") ## 在该路径下方架包:ojdbc6.jar,才可以读取Oracle数据库
drv<-JDBC("oracle.jdbc.driver.OracleDriver","ojdbc6.jar", identifier.quote="\"")  ##java中JDBC的套路
conn<-dbConnect(drv,"jdbc:oracle:thin:@10.113.113.166:1520:XE","********","**********") ##建立一个连接,**XE**是服务名称
table1<-dbGetQuery(conn,"SELECT * FROM T_SYN_YJXX_ZK01")  ##根据sql记录获取Oracle中表的数据
table2<-dbGetQuery(conn,"SELECT * FROM T_SYN_SSZB_ZK01")  ##根据sql记录获取Oracle中表的数据
colnames(table1) <- iconv(colnames(table1),from="UTF-8",to="GBK") ## 转换对象数据编码和数据库编码统一,解决乱码
colnames(table2) <- iconv(colnames(table2),from="UTF-8",to="GBK") ## 转换对象数据编码和数据库编码统一,解决乱码
### 创建MySQL数据库连接
con <- dbConnect(MySQL(), host="*******", dbname="******", user="******", password="************")
dbWriteTable(con,"auto_coal_waring",table1,overwrite=T)  ## 增量更新
dbWriteTable(con,"auto_coal_analysis",table2,overwrite=T)  ## 增量更新
dbWriteTable(con,"auto_coal_waring_history",table1,append=T)  ## 历史存储
dbWriteTable(con,"auto_coal_analysis_history",table2,append=T)  ## 历史存储

在这里插入图片描述

最终数据表每隔5分钟执行一次,获取传感器采集的数据,进行存库。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tandelin/article/details/106599662