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 //サービス
サービスを開始しますcrondstop //サービス
サービスを閉じますcrondrestart //サービスサービスを再起動し
ますcrondreload //構成
サービスのcrondステータスをリロードします//サービスステータスを表示します
crontab -u //ユーザーのcronサービスを設定します
crontab-l //現在のユーザーのcronスケジューリングコンテンツを表示します
crontab-r //ユーザーのcronサービスを削除します
crontab-e //ユーザーのcronサービスを編集します
crontab-i //印刷プロンプト、yesおよびその他の確認情報を入力します
スクリプトの原則:時限タスクの各セグメントは、分、時間、日、月、週、ユーザー、およびコマンドです。例:* / 5 * * * * ./home/test_shell/test2.sh#5分ごとに1回実行
実行結果ログ
[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分ごとに実行され、センサーによって収集されたデータを取得してデータベースに保存します。