您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > crontab定时运行命令
linux定时运行程序转crontab,无论root还是user都可以用。基本用法:1.crontab-l列出当前的crontab任务2.crontab-d删除当前的crontab任务3.crontab-e(solaris5.8上面是crontab-r)编辑一个crontab任务,ctrl_D结束4.crontabfilename以filename做为crontab的任务列表文件并载入crontabfile的格式:crontab文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间分钟(0-59)小时(0-23)日期(1-31)月份(1-12)星期几(0-6,其中0代表星期日)第6个字段是一个要在适当时间执行的字符串例子:#MINHOURDAYMONTHDAYOFWEEKCOMMAND#每天早上6点10分106***date#每两个小时0*/2***date(solaris5.8似乎不支持此种写法)#晚上11点到早上8点之间每两个小时,早上8点023-7/2,8***date#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点0114*mon-weddate#1月份日早上4点041jan*date[例7]#crontab-l#列出用户目前的crontab。106***date0*/2***date023-7/2,8***date#在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:minutehourday-of-monthmonth-of-yearday-of-weekcommands第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用*代替。因为*是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。在表4-1中给出了每项的合法范围。表4-1指定时间的合法范围时间合法值minute00-59hour00-23,其中00点就是晚上12点day-of-month01-31month-of-year01-12day-of-week0-6,其中周日是0这样用户就可以往crontab文件中写入无限多的行以完成无限多的命令。命令域中可以写入所有可以在命令行写入的命令和符号,其他所有时间域都支持列举,也就是域中可以写入很多的时间值,只要满足这些时间值中的任何一个都执行命令,每两个时间值中间使用逗号分隔。除了数字还有几个个特殊的符号就是*、/和-、,,*代表所有的取值范围内的数字,/代表每的意思,*/5表示每5个单位,-代表从某个数字到某个数字,,分开几个离散的数字。几个例子:每天早上6点06***echoGoodmorning./tmp/test.txt//注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。每两个小时0*/2***echoHaveabreaknow./tmp/test.txt晚上11点到早上8点之间每两个小时,早上八点023-7/2,8***echoHaveagooddream:)/tmp/test.txt每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点0114*1-3commandline1月1日早上4点0411*commandlineSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root//如果出现错误,或者有数据输出,数据作为邮件发给这个帐号HOME=///使用者运行的路径,这里是根目录#run-parts01****rootrun-parts/etc/cron.hourly//每小时执行/etc/cron.hourly内的脚本024***rootrun-parts/etc/cron.daily//每天执行/etc/cron.daily内的脚本224**0rootrun-parts/etc/cron.weekly//每星期执行/etc/cron.weekly内的脚本4241**rootrun-parts/etc/cron.monthly//每月去执行/etc/cron.monthly内的脚本大家注意run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。[例8]5,15,25,35,45,5516,17,18***command这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5min、15min、25min、35min、45min、55min时执行命令。[例9]在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab文件中就应该写入如下字段:0015**1,3,5shutdown-r+5然后将该文件存盘为foxy.cron,再键入crontabfoxy.cron安装该文件。[例10]每小时的10分,40分执行用户目录下的innd/bbslin这个指令:10,40****innd/bbslink[例11]每小时的1分执行用户目录下的bin/account这个指令:1****bin/account[例12]每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):203***(/bin/rm-fexpire.lslogins.bad;bin/expire$#@62;expire.1st)[例13]每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm-fexpire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。12,5534-91,4*/bin/rm-fexpire.1st$#@62;$#@62;mm.txt[例14]我们来看一个超级用户的crontab文件:#Runthe‘atrun’programeveryminutes#Thisrunsanythingthat’sduetorunfrom‘at’.Seeman‘at’or‘atrun’.0,5,10,15,20,25,30,35,40,45,50,55****/usr/lib/atrun407***updatedb8,10,22,30,39,46,54,58****/bin/sync进程的挂起及恢复命令bg、fg作业控制允许将进程挂起并可以在需要时恢复进程的运行,被挂起的作业恢复后将从中止处开始继续运行。只要在键盘上按〈ctrl+z$#@62;,即可挂起当前的前台作业。[例15]$cattext.file〈ctrl+z$#@62;[1]+stoppedcattext.file$jobs[1]+stoppedcattext.file在键盘上按〈ctrl+z$#@62;后,将挂起当前执行的命令cat。使用jobs命令可以显示shell的作业清单,包括具体的作业、作业号以及作业当前所处的状态。恢复进程执行时,有两种选择:用fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行。[例16]用户正在使用Emacs,突然需要查看系统进程情况。就首先使用〈Ctrl+z$#@62;组合键将Emacs进程挂起,然后使用bg命令将其在后台启动,这样就得到了前台的操作控制权,接着键入“ps?x”查看进程情况。查看完毕后,使用fg命令将Emacs带回前台运行即可。其命令格式为:〈Ctrl+z$#@62;$bgemacs$ps?x$fgemacs默认情况下,fg和bg命令对最近停止的作业进行操作。如果希望恢复其他作业的运行,可以在命令中指定要恢复作业的作业号来恢复该作业。例如:$fg1cattext.file文件含义/etc/cron.deny该文件中所列的用户不允许使用Crontab命令/etc/cron.allow该文件中所列的用户允许使用Crontab命令/var/spool/cron/是所有用户的crontab文件/var/spool/cron/crontabs/var/spool/cron/crontabsCrontab命令的格式为:crontab–l|-r|-e|-i[username],其参数含义如表一:参数名称含义示例-l显示用户的Crontab文件的内容crontabl–l-i删除用户的Crontab文件前给提示crontabl-ri-r从Crontab目录中删除用户的Crontab文件crontabl-r-e编辑用户的Crontab文件crontabl-e用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,格式如下:*****command其时间段的含义如表二:段含义取值范围第一段代表分钟0—59第二段代表小时0—23第三段代表日期1—31第四段代表月份1—12第五段代表星期几,0代表星期日0—6例:如果用户的Crontab文件的内容是:2919***echoitsdinnertime,则系统每天的19:29显示‘itsdinnertime’示例(创建一个cron全过程,每分钟都会在test.txt里输入当前时间):1.以普通用户登录linux系统(我用的是CentOS4.1)2.$crontab–e说明:系统默认的编辑器是VIM,如果不是请加上以下shell:$EDITOR=vi$exportEDITOR3.输入”*/1****date$HOME/test.txt”,saveandexitVIM4.$suroot5.$cd/etc/init.d6../crondrestart下面看看看几个具体的例子:●0*/2***/sbin/servicehttpdrestart意思是每两个小时重启一次apache●507***/sbin/servicesshdstart意思是每天7:50开启ssh服务●5022***/sbin/servicesshdstop意思是每天22:50关闭ssh服务●001,15**fsck/home每月1号和15号检查/home磁盘●1****/home/bruce/backup每小时的第一分执行/home/bruce/backup这个文件●0003**1-5find/home*.xxx-mtime+4-execrm{}\;每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。●306*/10**ls意思是每月的1、11、21、31日是的6:30执行一次ls命令Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:文件含义/etc/cron.deny该文件中所列的用户不允许使用Crontab命令/etc/cron.allow该文件中所列的用户允许使用Crontab命令/var/spool/cron/是所有用户的crontab文件/var/spool/cron/crontabs/var/spool/cron/crontabsCrontab命令的格式为:crontab–l|-r|-e|-i[username],其参数含义如表一:参数名称含义示例-l显示用户的Crontab文件的内容crontabl–l-i删除用户的Crontab文件前给提示crontabl-ri-r从Crontab目录中删除用户的Crontab文件crontabl-r-e编辑用户的Crontab文件crontabl-e用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,格式如下:*****command其时间段的含义如表二:段含义取值范围第一段代表分钟0—59第二段代
本文标题:crontab定时运行命令
链接地址:https://www.777doc.com/doc-2907439 .html