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 //サービス
サービスを開始します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分ごとに実行され、センサーによって収集されたデータを取得してデータベースに保存します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/tandelin/article/details/106599662