crontab定时程序使用

【Linux】shell调用Java程序main方法通过crontab定时执行 最近一个项目需要写一个batch定时读取文件往数据库里插入记录,第一次写,遇到好多问题,记录一下。 先从shell如何调用java说起。 建立如下目录结构 batch                          根目录 ├── bin                    shell放置目录(如果直接放java class也放这里) │   ├── 1.sh │   ├─ 阅读详情

crontab定时程序,可按规定时间、周期性执行程序
>crontab -l #列出所有当前定义的定时执行项
>crontab -e #编辑定时执行项
>crontab -r #删除定时执行项

  • crontab文件的格式:M H D m d cmd. 

M: 分钟(0-59)。 
H:小时(0-23)。 
D:天(1-31)。 
m: 月(1-12)。 
d: 一星期内的天(0~6,0为星期天)。 
cmd:要运行的程序,一般为shell,要求全路径

 

程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。

  • 时间定义

10 6 * * * date #每天早上6点10分
0 */2 * * * date  #每两个小时 
0 23-7/2,8 * * * date  #晚上11点到早上8点之间每两个小时,早上8点 
0 11 4 * mon-wed date  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点  
0 4 1 jan * date #1月1日早上4点

 

  • sh中环境变量

由于crond启动的shell程序不包括环境变量,所以需要在自己的shell程序中配置。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

#for oracle 
export LANG=en_us
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/product/9.2.0.1
export ORACLE_SID=bak
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

ORACLE_CONN=xxx/xxx@sid_xxx

SQL_STAT=/home/oracle
 
echo "insert into tmp_1 values('111');" >tmp.sql
echo "commit;" >>tmp.sql
echo "exit" >>tmp.sql
 
cp -f tmp.sql /home/oracle
chmod 777 /home/oracle/tmp.sql

# 运行数据库脚本获取
#su - oracle <<!
sqlplus $ORACLE_CONN  @tmp.sql
#!
 

 

  • 特别注意

 crond可能由于调用shell执行时未重定义标准输出,所以当sh中标准输出过多时,可能会卡住,造成后继脚本不执行。

可通过将shell中命令的标准输出重定向进行处理。如 echo eaaa >/dev/null 2>/dev/null 

  • 参考

cron是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。
cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。要调度一次性的任务。
要使用 cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。

------ 1.配置 cron 任务
cron 的主配置文件是 /etc/crontab,它包括下面几行:

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

 

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置 cron 任务运行环境的变量。SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute   hour   day   month   dayofweek   command

minute — 分钟,从 0 到 59 之间的任何整数

hour — 小时,从 0 到 23 之间的任何整数

day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用 run-parts 脚本来执行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。范例请参见例 37-1。

# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh


根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。

cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

-------- 2.控制对 cron 的使用
/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

无论使用控制文件中的规定如何,根用户都总是可以使用 cron。

如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。

如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

------ 3.启动和停止服务
要启动 cron 服务,使用 /sbin/service crond start 命令。要停止该服务,使用 /sbin/service crond stop 命令。推荐你在引导时启动该服务。

 

 

 

【Python自学笔记】Ubuntu环境下如何使用Crontab定时自行Python程序 文章目录Ubuntu安装Crontab安装代码使用命令Cron格式定时执行python程序 Ubuntu安装Crontab 安装代码 安装:apt-get install cron 启动:service cron start 重启:service cron restart 停止:service cron stop 检查状态:service cron status 使用命令 使用cron帮助:m... 阅读详情

相关推荐

Windows 下安装 Hermes Agent 完整教程(含踩坑记录)

不支持原生 Windows,必须通过 WSL2 (Windows Subsystem for Linux 2) 运行。WSL2 是 Windows 内置的 Linux 兼容层,可以在 Windows 上运行完整的 Linux 环境。

weixin_50191542的博客 4275

crontab使用方法

一、crontab基本用法 1.1 cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。 service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看服务状态 1.2 Crontab存放路径 /var/spool/c...

chris 4万+

运动想象 (MI) 分类学习系列 (19) : EEG-TransNet

本文提出了一种基于注意力机制的卷积神经网络(EEG-TransNet),用于运动想象脑电图(MI-EEG)解码。该方法创新性地通过平均池化和方差池化提取多模态时间信息,并结合自注意力模块捕获长期依赖关系。消融实验表明,方差池化比最大池化更有效(p<0.05),且注意力模块和卷积编码器对特征判别性至关重要。可视化分析验证了该方法能学习到更具判别性的紧凑特征。该工作为MI-EEG解码提供了新的多尺度时间信息融合视角,代码已开源。

走在深度学习前沿的小宋 358

Crontab配置及使用总结

1、  crontab命令概念 crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。 crontab命令允许用户提交、

BDLng的博客 1万+

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4642

Vue3 - 详解实现网站接入微信扫码登录功能,微信授权生成登录二维码用户用手机扫描二维码登陆,微信扫描二维码登录详细流程及示例代码,支持弹框式、浏览器单独新开页显示,最新vue集成微信扫码授权登录!

vue3,nuxt3,PC网站,网页,微信扫码登录,微信登陆,vue3微信扫码登录,获取个人信息,扫码登录后如何获取用户手机号,微信扫码授权登录,vue3详细实现微信扫一扫登陆,pc网页微信登录,vue3集成微信扫码登录,详细流程和示例源码,第三方扫码登录,vue3微信扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,微信扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描微信二维码登录网站,最好用的插件,vue-wxlo

🏆 前端领域优质创作者 1万+

crontab的使用方法介绍

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行安装:apt-get install cron   (服务器环境下默认都会安装)使用:crontab -e   进入编辑页面(第一次进入会让你选择编辑器)          crontab -l   查看当前的定时任务以上是crontab的使用规则,以及定时方法的...

python小白的逆袭之路 7万+

YOLOv12改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv12轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1215

Linux设置定时任务命令crontab详细解释

Linux设置定时任务命令crontab详细解释1、 crontab命令概念和意义2、检查是否安装了crontab命令3、crontab服务启动与关闭4、全局配置文件5、用户配置文件6、crontab文件格式7、特殊字符8、写脚本测试功能9、编写一条定时任务10、查询当前用户定时任务11、删除当前用户定时任务12、设置crond开机自动启动13、定时任务实例 1、 crontab命令概念和意义...

徊忆羽菲 108万+

Python画柱状图(双柱状图,三柱状图)且显示对应数值

使用python实现双柱状图和三柱状图,并且在柱状图形的顶部显示对应数值;

yue200403的博客 1万+

YOLOv11改进策略【模型轻量化】| 使用 MoblieOne 模块,引入结构重参数化,提高模型检测效率

本文记录的是基于MobileOne的YOLOv11骨干网络改进方法研究。MobileOne的基础模块通过重参数化,。在将其替换YOLOv11的骨干网络后,实现模型轻量化。

Limiiiing的博客 1424

Linux中crontab用法详解

Crontab(Cron Table)是一个用于设置周期性执行任务的列表,并且这个列表会被cron守护进程读取和执行。cron守护进程是一个自启动的后台服务,它会检查是否有需要执行的任务。

码上飞扬的博客 946

【超详细】计算机组成原理总结及思维导图

计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和地址码组成 4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变 5.机器以运...

圣三一 10万+

crontab定时执行java程序(简单易懂)

linux下利用crontab定时执行java程序 1.首先写好我们的java类,上传到linux系统目录下(注意java程序,最好去掉开头的package) 2.编写简单的shell脚本,执行java程序,根据自己程序目录位置改写下面代码 命令:vi test.sh #!/bin/sh source /etc/profile cd /usr/local/ javac Test.java java Test 3.编辑定时任务 命令:crontab -e 简单解释一下crontab的时间格式 f1

bug的博客 5288

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

centos7.2 下crontab定时java程序

背景:写好shell文件后,执行shell文件成功,但是放到定时器crontab却定时失败。   1、crontab定时java程序与其他程序类似,需要注意在sh文件中应该这样写 nohup /usr/java/jdk1.8.0_171/bin/java -jar Spider.jar 注意:java写全路径        ...

u014520797的专栏 888

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Linux中定时程序,Linux下实现定时执行程序--crontab

写在前面在Linux下,用crontab实现定时执行程序的功能。正文使用方式 :crontab file [-u user]:用指定的文件替代目前的crontab。crontab -[-u user]:用标准输入替代目前的crontab.crontab -l[user]:列出用户目前的crontab.crontab -e[user]:编辑用户目前的crontab.crontab -d[user]:...

weixin_39725365的博客 120

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ubuntu 下使用crontab定时执行java程序

题记之前使用solr进行全文检索,涉及到检索更新问题,这里采用定时更新方法,现在使用的系统为ubuntu,因此考虑crontab. 解决思路一.准备工具 打包java程序jar 安装crontab 二.编写crontab 脚本过程一.工具准备 1,制作jar包,可以通过java jar命令,也可以通过eclipse工具. 2.安装crontab ubuntu上安装比较方便:sudo a

cdd801的专栏 1153

crontab 启动java程序_linux中crontab定时任务启动Java程序碰到的问题

最近工作需求,需要在Linux中启动定时任务,每隔2分钟调用一个Java程序,碰到一系列的问题,总结如下1.crontab定时任务如果指定了结果输出流文件,则要输入 2>&1 才会将结果输出到指定的文件,如*/2 * * * * /opt/a8box/mb_umdtasker/create_umd.sh >/opt/a8box/mb_umdtasker/out.log 2&gt...

weixin_36212762的博客 531

ubuntu上使用crontab定时执行python程序

1. 编写一个简单的python程序test.py print('hello, crontab!') print('-'*50) print('hello, crontab') 2. 使用test.sh文件执行python程序(./test.sh) #!/bin/sh cd `dirname $0` || exit 1 python test.py >> run.log 2&g...

qq_29570381的博客 485

crontab 执行java_linux crontab定时任务执行java程序

crontab定时任务执行java 程序需要在crontab上有Java环境一般使用一个shell 脚本来执行Java程序, 由定时任务去调度shell脚本vim springboot-report-crontab.sh#!/bin/shsource /etc/profilecd /usr/local/cd /root/work/report/java -jar -Dspring.config...

weixin_42509815的博客 586

Linux 下用 crontab 设置定时执行python 程序

Linux 下用 crontab 设置定时执行python 程序 方法/步骤 1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件。 crontab命令详解可以查找网上资料。 linux 下输入命令 crontab -l 查询当前系统用户设置了哪些执行任务(例如test_scan.py 就是当前用户设置的执行...

weixin_30315435的博客 213

使用linux crontab做jar程序定时调度任务

使用linux crontab做jar程序定时调度任务能满足大多数关于“定时调度”的需求。

cesul的专栏 2728

Linux crontab定时器设置(定期执行java程序)

环境:      RedHat Linux      JDK5.0 功能说明:      每天早上2点钟执行一次java程序,读取Oracle数据库的数据进行备份。 操作步骤:      1、首先,将java程序打包成为jar包,包名为auto.jar,注意要设置该jar包的MANIFEST.MF的Main-Class的类,         将jar包复制到/us

zhoujj303030的专栏 1926

crontab定时任务Java程序不执行问题

 crontab定时任务Java程序不执行问题 linux下,项目部署在/data/my/scriptTest/bin ./back.sh 其中脚本在项目下,可以正常执行 vi back.sh #!/bin/sh ulimit -n 65536 # cp运行备份jar cp -f scriptTest.jar scriptTest_runtime.jar # 执行程序,依赖

qingzhong_he2010 4680

crontab无法定时执行程序

Crontab 无法定时执行程序

qq_48329194的博客 256

crontab 每天 定时启动和停止程序

1. 需要对一个java架包每天定时重启,直接使用crontab     2. 停止程序脚本   touchtop-spider.sh   vim stop-spider.sh   输入如下代码   ps -ef|grep bigdata-crawler-web |grep -v grep | awk '{print $2}' | xargs kill -9;   echo 'stop...

qq_16532991的博客 87
上一篇: linux shell编程
下一篇: nohup后台执行
airobot008
博客等级 码龄18年 8粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值