使用crond 在linux中定时执行任务Word格式文档下载.docx
《使用crond 在linux中定时执行任务Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《使用crond 在linux中定时执行任务Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
上面脚本中的时间是从左到右的,分别列出了五个字段,我们看下面的表:
------------------------------------------------
字段取值范围
Minute0~59
Hour0~23,其中0是午夜,20是晚上8点
Day1~31
Month1~12
Dayofweek0~7,其中0和7是表示星期天
任何字段中的星号是通配符,例如,如果第一个字段包括星号,则特定若无其事在可能的每一分钟运行。
如果要指定时间范围,比如上午8点到
下午4点,则可以见第二个字段设置为8~16。
如果要隔一天运行任务,则可以将第三个字段设置为*/2。
可以看出,如果五个字段(minute、hour
、day、month、dayofweek)之后,cron中的每个字段就没什么神秘之处了。
2.用户自己的cron
用户也可以计划用户自己的cron任务,比如他想要在半夜整理他的文件,然后发送邮件给自己,只要这个用户他没有在/etc/cron.deny表中,
就可以使用crontab-e命令来启动自己的cron文件。
3.对cron的访问控制
默认情况下,所有用户都能访问cron工具,要对cron进行访问控制,则可以生成/etc/cron.allow与/etc/cron.deny文件。
(1)这两个文件都不存在时,每个用户都可以访问cron工具]
(2)存在/etc/cron.allow文件时,则只有cron.allow文件中允许的用户才能访问cron工具,如果也有/etc/cron.deny文件,则忽略cron.deny文件
二、使用at命令定期运行程序
1.使用cron运行任务
cron任务的缺点是计划要经常运行,假如我们只是想要让特定任务运行一次呢?
那么,这时候就要用到at监控程序了。
设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它.
at命令相当于另一个shell,运行attime命令时,它发送一个命令,可以输入任意命令或者程序。
atnow+time命令可以在指示任务。
假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨2点5分。
那么我们就应该先建立/home/mj/airplane脚本管理数据库,计划处理/home/mj/air-safe文件中的结果。
正常方式是这样启动下列命令:
#at2:
05tomorrow
at>
/home/mj/airplane>
/home/mj/air-safe
Ctrl+D
ATTime中的时间表示方法
-----------------------------------------------------------------------
时间例子说明
Minuteatnow+5minutes任务在5分钟后运行
Houratnow+1hour任务在1小时后运行
Daysatnow+3days任务在3天后运行
Weeksatnow+2weeks任务在两周后运行
Fixedatmidnight任务在午夜运行
Fixedat10:
30pm任务在晚上10点3
Linux通过脚本执行Java程序
最近在Linux上定时执行脚本程序的要求越来越多了,今天的任务是:
在Linux服务器上编一个脚本,并定时执行该脚本(脚本的目的执行一个java程序,要求java程序要打成jar包)。
1.编写java程序(公司要求我要读取一个txt文件,并将txt文件的不同的ip做一个统计在存放到一个新的txt文件中)
由于要统计不同的IP,代码中应用了HashSet来存放IP地址。
上述Java程序是在Windows下编写的,如果在Linux服务器上运行,只需要把上面文件的路径和文件更换了就可以了。
2.编写好java程序后,将java程序打成jar文件(环境Linux)
我将上述测试好的java类上传到了Linux服务器上,考虑到服务器的路径与windows下的路径不同所以我在服务器上将上述代码更改为服务器上的代码了。
(1)修改文件路径
Java代码
sudovimTest1.java
(2)生成.class文件
javacTest1.java
(3)创建一个.mf文件,并编辑该文件
sudotouchTest1.mf
sudovimTest1.mf
Test1.mf文件内容如图:
(4)打.jar包
Java代码
jarcfmtest1.jarTest1.mf*.class
执行完上述命令,文件夹中会多一个test1.jar文件
java-jartest1.jar
测试你的jar是否成功,如果成功会有一个123.txt文档。
(5)编写一个Linux脚本执行第四步命令(写此脚本的目的是方便以后Linux可以定时执行脚本)
新建一个.sh文件
sudotouchtest.sh
编辑该test.sh文件
文件内容如图:
sudochmod777test.sh
./test.sh
上面就把Linux执行java程序介绍完了,关于如何执行脚本可以参考
本文用的的文件可以在附件中下载其中welcomelog.txt为原始文件,123.txt为程序生成文件。
附件下载
Ubuntu定时执行.sh脚本
在Ubuntu中备份svn上传的代码,将备份的文件命名为svn_backup+当前时间.dump文件(例svn_backup20100525.dump)
1.编写脚本文件(backup.sh)
sudotouchbackup.sh
创建脚本文件,并编辑文件
sudovimbackup.sh
上图为配置的文件内容,代码如下:
#!
/bin/sh
sudosvnadmindump/srv/svn/repos/works>
/home/jordy/svn_back_up$(date+%Y%m%d).dump
echosuccess!
中间那句是将/srv/svn/repos/works目录下的代码备份到/home/jordy/目录下,文件名为
svn_backup+当前时间.dump文件,最后一句只是提示备份成功,可以删掉。
使用命令
sh-x
backup.sh
测试脚本是否成功。
上面脚本文件编写完成后,下面执行定时任务:
sudovim/etc/crontab
如图
代码中的最后一行,其中:
是表示备份的时间,按照mhdommondow填写,我的测试时每一分钟执行一次
backup.sh脚本文件。
操作结束,可以去相应的目录下查看备份文件是否生成。
linux定时任务的设置
为当前用户创建cron服务
1.
键入crontab
-e编辑crontab服务文件
例如文件内容如下:
*/2****/bin/sh/home/admin/jiaoben/buy/deleteFile.sh
保存文件并并退出
*/2****/bin/sh/home/admin/jiaoben/buy/deleteFile.sh
*/2****通过这段字段可以设定什么时候执行脚本
/bin/sh/home/admin/jiaoben/buy/deleteFile.sh这一字段可以设定你要执行的脚本,这里要注意一下bin/sh是指运行
脚本的命令
后面一段时指脚本存放的路径
2.查看该用户下的crontab服务是否创建成功,用crontab
-l
命令
3.启动crontab服务
一般启动服务用
/sbin/servicecrondstart若是根用户的cron服务可以用sudoservicecrondstart,这里还是要注意
下不同版本linux系统启动的服务的命令也不同,像我的虚拟机里只需用sudoservicecron
restart即可,若是在根用下直接键入service
cron
start就能启动服务
4.查看服务是否已经运行用ps-ax|grep
5.crontab命令
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab-u//设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab-l
//列出某个用户cron服务的详细内容
crontab-r//删除没个用户的cron服务
crontab-e//编辑某个用户的cron服务
比如说root查看自己的cron设置:
crontab-uroot-l
再例如,root想删除fred的cron设置:
crontab-ufred-r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:
crontab-uroot-e
进入vi编辑模式,编辑的内容一定要符合下面的格式:
*/1****ls>
>
/tmp/ls.txt
任务调度的crond常驻命令
crond是linux用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此
任务调度命令。
crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工
作便会自动执行该工作。
6.crontab命令选项:
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
7.
cron文件语法:
分
小时
日
月
星期
命令
0-59
0-23
1-31
1-12
0-6
command
(取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
8.任务调度设置文件的写法
可用crontab-e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
具体格式如下:
MinuteHourDayMonthDayofweek
command
分钟
天
月
天每星期
命令
每个字段代表的含义如下:
Minute
每个小时的第几分钟执行该任务
Hour
每天的第几个小时执行该任务
Day
每月的第几天执行该任务
Month
每年的第几个月执行该任务
DayOfWeek
每周的第几天执行该任务
Command
指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选
字段,可视需要决定。
对于不指定的字段,要用“*”来填补其位置。
举例如下:
5
*
*
ls
指定每小时的第5分钟执行一次ls命令
30
5
指定每天的5:
30执行ls命令
7
8
指定每月8号的7:
30分执行ls命令
6
指定每年的6月8日5:
30执行ls命令
0
指定每星期日的6:
30执行ls命令[注:
0表示星期天,1表示星期1,
以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。
]
30
3
10,20
每月10号及20号的3:
“,”用来连接多个不连续的时段]
25
8-11*
每天8-11点的第25分钟执行ls命令[注:
“-”用来连接连续的时段]
*/15
每15分钟执行一次ls命令[即每个小时的第015304560分钟执行ls命令]
*/10
每个月中,每隔10天6:
30执行一次ls命令[即每月的1、11、21、31日是的6:
30执行一次ls命令。
]
每天7:
50以root身份执行/etc/cron.daily目录中的所有可执行文件
50
root
run-parts
/etc/cron.daily
[注:
run-parts参数表示,执行后面目录中的所有可执行文件。
9.新增调度任务
新增调度任务可用两种方法:
1)、在命令行输入:
crontab-e然后添加相应的任务,wq存盘退出。
2)、直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务。
10.查看调度任务
//列出当前的所有调度任务
-ujp
//列出用户jp的所有调度任务
11.删除任务调度工作
crontab-r
//删除所有任务调度工作
12.任务调度执行结果的转向
例1:
每天5:
30执行ls命令,并把结果输出到/jp/test文件中
305***ls>
/jp/test2>
&
1
注:
2>
1表示执行结果及错误信息。
编辑/etc/crontab文件配置cron
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。
用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。
此文件的文件格式是:
SHELL=/bin/bash
/usr/bin
MAILTO=root//如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=///使用者运行的路径,这里是根目录
#run-parts
01
rootrun-parts/etc/cron.hourly
//每小时执行
/etc/cron.hourly内的脚本
02
4
rootrun-parts/etc/cron.daily
//每天执行/etc/cron.daily内的脚本
22
rootrun-parts/etc/cron.weekly
//每星期执行/etc/cron.weekly内的脚本
42
1
rootrun-parts/etc/cron.monthly
//每月去执行/etc/cron.monthly内的脚本
大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
例如:
1)在命令行输入:
2)直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务
1122110*rm-rf/mnt/fb
linux定时执行Java程序
最近有个需求,每晚7点左右从数据库读取数据,写到一个配置文件中,时间具体未定。
程序用Java实现,在linux机器上,需要定时执行。
1、新建Daily.sh,这是定时执行的目标程序。
文件中不只要执行"
javaDaily"
,还要指定环境变量,否则定时执行时不能获取到环境变量。
Shell代码
1.#!
/bin/bash
2.
3.JDIR=/web/
4.
5.echo"
"
6.date
7.echo"
进入$JDIR执行更新操作"
8.cd$JDIR
9.
10.exportLANG=en_US.UTF-8
11.exportLANGVAR=en_US.UTF-8
12.exportLC_ALL=zh_CN
13.exportJAVA_HOME=/web/bea/jdk141_05
14.exportPATH=/web/bea/jdk141_05/bin/:
$PATH
15.exportCLASSPATH=.:
/web/bea/jdk141_05/lib:
/web/bea/jdk141_05/lib/tools.jar:
/root/java/lib/classes12.jar:
/root/java/lib:
/web/value/commons-collections-3.1.jar:
/web/value/commons-configuration-1.5.jar:
/web/value/commons-lang-2.3.jar:
/web/value/commons-logging-1.1.1.jar:
/web/value/ojdbc14.jar
16.