IT人学会写cron,减少你的工作量!

网友投稿 578 2022-09-22

IT人学会写cron,减少你的工作量!

IT人学会写cron,减少你的工作量!

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。

通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

crontab命令的功能是在一定的时间间隔调度一些命令的执行。

在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每

个用户可以建立自己的调度crontab。crontab命令有三种形式的命令行结构:crontab [-u user] [file] crontab [-u user] [-e|-l|-r] crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;命令行中-l选项的作用是显示用户crontab文件的内容。使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。执行命令crontab -u user -r即可删除当前用户的所有的cron作业。作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。第一道第五个字段的整数取值范围及意义是:0~59 表示分1~23 表示小时1~31 表示日1~12 表示月份0~6 表示星期(其中0表示星期日)/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。一、任务调度设置文件的写法其格式如下:Minute Hour Day Month Dayofweek command分钟小时天月天每星期命令每个字段代表的含义如下:Minute 每个小时的第几分钟执行该任务Hour 每天的第几个小时执行该任务Day 每月的第几天执行该任务Month 每年的第几个月执行该任务DayOfWeek 每周的第几天执行该任务Command 指定要执行的程序在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。举例如下:1、指定每小时的第5分钟执行一次ls命令5 * * * * ls2、指定每天的 5:30 执行ls命令30 5 * * * ls3、指定每月8号的7:30分执行ls命令30 7 8 * * ls4、指定每年的6月8日5:30执行ls命令30 5 8 6 * ls5、指定每星期日的6:30执行ls命令30 6 * * 0 ls注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。6、每月10号及20号的3:30执行ls命令30 3 10,20 * * ls注:“,”用来连接多个不连续的时段7、每天8-11点的第25分钟执行ls命令25 8-11 * * * ls注:“-”用来连接连续的时段8、每15分钟执行一次ls命令*/15 * * * * ls即每个小时的第0 15 30 45 60分钟执行ls命令9、每个月中,每隔10天6:30执行一次ls命令30 6 */10 * * ls即每月的1、11、21、31日是的6:30执行一次ls命令。10、每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件50 7 * * * root run-parts /etc/cron.daily注:run-parts参数表示,执行后面目录中的所有可执行文件。二、新增调度任务新增调度任务可用两种方法:1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。2、直接编辑/etc/crontab 文件,即vim /etc/crontab,添加相应的任务。三、查看调度任务crontab -l //列出当前的所有调度任务crontab -l -u jp  //列出用户jp的所有调度任务四、删除任务调度工作crontab -r //删除所有任务调度工作五、任务调度执行结果的转向例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中30 5 * * * ls >/jp/test 2>&1注:2>&1 表示执行结果及错误信息。编辑/etc/crontab 文件配置cron   cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

此文件的文件格式是:   SHELL=/bin/bash   PATH=/sbin:/bin:/usr/sbin:/usr/bin   MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号  HOME=/ //使用者运行的路径,这里是根目录  # run-parts   01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本  02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本  22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本  42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本  大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了at命令的用法 At列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。at [\\computername] [[id] [/delete] | /delete [/yes]]at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command 参数无如果在没有参数的情况下使用,则 at 列出已计划的命令。\\computername指定远程计算机。如果省略该参数,命令将安排在本地计算机。id指定指派给已计划命令的识别码。 /delete取消已计划的命令。如果省略了 id,计算机中已计划的命令将被全部取消。/yes当删除已计划的事件时,对系统的查询强制进行肯定的回答。time指定运行命令的时间。将时间以 24 小时标记(00:00 [午夜] 到 23:59)的方式表示为小时:分钟。/interactive允许作业与在作业运行时登录用户的桌面进行交互。/every:date[,...]在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行命令。将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。/next:date[,...]在重复出现下一天(例如,下个星期四)时,运行指定命令将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。command指定要运行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。如果命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c,例如:cmd /c dir > c:\test.out体验Windows 系统内置的AT命令   AT命令是Windows 中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。  我们可以在“开始→运行”中输入AT命令,下面就来看看AT命令的一些实例分析。  1、定时关机  命令:at 21:00 ShutDown –S –T30  该命令运行后,到了21:00点,电脑会出现“系统关机”对话框,并默认30秒延时自动关机。  2、定时提醒  命令:at 12:00 Net Send 192.168.2.2与朋友约会的时间到了,快点准备出发吧!  其中Net Send是Windows内部程序,可以发送消息到网络上的其他用户、计算机。192.168.2.2是本机电脑的IP地址。

这个功能在Windows中也称作“信使服务”。  3、自动运行批处理文件  如果公司的数据佷重要,要求在指定的日期/时间进行备份,那么运行:  命令:at 1:00AM /Every:Saturday My_BackUp.bat  这样,在每个Saturday(周六)的早上1:00点,电脑定时启动My_BackUp.bat批处理文件。My_BackUp.bat是一个你自行编制的批处理文件,它包含能对系统进行数据完全备份的多条命令。  4、取消已经安排的计划  命令:at 5 /Delete  有时候,你已经安排好的计划可能临时变动,这样你可以及时地用上述命令删除该计划(5为指派给已计划命令的标识编号),当然,删除该计划后,可以重新安排!

掌握了这些对你的工作有很大的帮助!!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python之懒惰属性(延迟初始化)
下一篇:UNIX网络编程 头文件找不到apue.h 的解决方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~