在LINUX中,周期性任务一般由守护进程cron处理[ps-ef|grepcron]。cron读取一个或多个包含命令行及其调用时间的配置文件。cron配置文件叫做“crontab”,是“crontable”的简称。1、cron服务 cron是linux下的定时执行工具,无需人工干预即可运行作业。 servicecrondstart//启动服务 servicecrondstop//关闭服务 servicecrondrestart//重启服务 servicecrondreload//重新加载配置 servicecronstatus//查看服务status2.cron配置文件1./var/spool/cron/这个目录存放了包括root在内的各个用户的crontab任务。每个任务都以创建者的名字命名。比如tom创建的crontab任务对应的文件是/var/spool/cron/tom。通常,一个用户最多有一个crontab文件。3./etc/crontab/etc/crontab这个文件负责安排维护系统的crontab和系统管理员制定的其他任务。SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/#详见man4crontabs#作业定义示例:#.--------------分钟(0-59)#|.------------小时(0-23)#||.------------月中的第几天(1-31)#|||.--------月(1-12)或一月、二月、三月、四月...#||||.----星期几(0-6)(星期日=0或7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六#|||||#*****要执行的用户名命令MAILTO=root:是的,当文件/etc/crontab中的常规命令发生错误时,将错误信息或屏幕上显示的信息发送给谁?由于root在客户端收不到邮件,所以我一般都会把这个邮件换成自己的账号,这样可以随时了解系统的状态!01rootrun-parts/etc/cron.hourly:在#run-parts这一行后面的命令中,我们可以发现root后面跟了五个数字,这一行代表的是“执行级别为root状态”当然,你也可以把这条线改成其他身份!而run-parts表示后面的/etc/cron.hourly是“一个目录下的所有可执行文件(/etc/cron.hourly)”,也就是说,在每小时的01分,系统会以root身份运行进入/etc/cron.hourly目录执行所有可执行文件!接下来三行意思差不多!你可以在/etc/下看,系统预设了这4个目录!你可以直接把每天需要执行的命令写到/etc/cron.daily中,不需要使用crontab-e程序!4./etc/cron.d//etc/cron.d/该目录用于存放任何要执行的crontab文件或脚本。5.Permissioncrontab权限问题到/var/adm/cron/查看cron.allow和cron.deny文件是否存在。使用方法如下:1、如果这两个文件不存在,只有root用户才能使用crontab命令。2.如果cron.allow存在但cron.deny不存在,则只有cron.allow文件中列出的用户才能使用crontab命令。如果root用户不在里面,root用户也不能使用crontab。3、如果cron.allow不存在而cron.deny存在,只有cron.deny文件中列出的用户不能使用crontab命令,其他用户可以使用。4.如果这两个文件都存在,cron.allow文件中列出而cron.deny文件中未列出的用户可以使用crontab。如果两个文件中都存在同一个用户,检查cron.allow文件中是否存在。以用户为准。如果cron.allow中有这个用户,可以使用crontab命令。AIX中普通用户默认有crontab权限。如果要限制用户使用crontab,需要编辑/var/adm/cron/cron.deny在HP-UNIX中,普通用户默认没有crontab权限。如果想释放普通用户的crontab权限六、创建cron脚本第一步:编写一个cron脚本文件,命名为crontest.cron。15,30,45,59echo"xgmtest.....">>xgmtest.txt意思是,每隔15分钟执行一次打印命令Step2:添加定时任务。执行命令“crontabcrontest.cron”。获取第三步:“crontab-l”查看定时任务是否成功或者查看/var/spool/cron下是否生成了相应的cron脚本注意:该操作是直接替换用户下的crontab,而不是添加一个新的一个。7.crontab用法 crontab命令用于安装、删除或列出用于驱动cron后台进程的表。用户将需要执行的命令序列放入crontab文件中执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不能直接创建或修改。crontab文件是通过crontab命令创建的 如何在crontab文件中输入要执行的命令和时间。文件中的每一行包括六个字段,前五个字段指定命令执行的时间,最后一个字段是要执行的命令。使用空格或制表符分隔每个字段。格式如下: 分钟小时day-of-monthmonth-of-yearday-of-week命令合法值00-5900-2301-3101-120-6(0为星期日)`除了数字还有几个特殊符号是“*”、“/”和“-”,“,”,*代表取值范围内的所有数字,“/”代表每一个,“/5”代表每5个一个单位,“-”代表从某个数到某个数,“,”隔开几个离散的数。`-l在标准输出上显示当前的crontab。 -r删除当前的crontab文件。 -e使用VISUAL或EDITOR环境变量指定的编辑器编辑当前的crontab文件。当您完成编辑离开时,编辑后的文件将自动安装。8.例子每天早上6:006***echo"Goodmorning.">>/tmp/test.txt//注意简单的回显,从屏幕上看不到任何输出,因为cron会将任何输出通过邮件发送到根邮箱。每两个小时0*/2***echo“现在休息一下。”>>/tmp/test.txt在晚上11点到早上8点之间每两个小时和早上8点023-7/2,8***echo"Haveagooddream">>/tmp/test.txt每个月的第四个和每个星期一到星期三上午11点0114*1-3命令行1月4:00411*命令行SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root//如果有错误或数据输出,数据将其作为电子邮件发送到此帐户HOME=/每小时执行/etc/cron.hourly中的脚本01****rootrun-parts/etc/cron.hourly每天执行/etc/cron.daily中的脚本024***rootrun-parts/etc/cron.daily每周执行/etc/cron.weekly中的脚本224**0rootrun-parts/etc/cron.weekly每月执行/etc/cron.monthly中的脚本Script4241**rootrun-parts/etc/cron.monthly注意:“run-parts”是参数,如果去掉这个参数,您可以编写要运行的脚本的名称而不是文件夹名称。每天下午4:00、5:00、6:00分别在5分钟、15分钟、25分钟、35分钟、45分钟、55分钟执行命令。5,15,25,35,45,5516,17,18***命令系统在每周一、三、五下午3:00进入维护状态,并重启系统。0015**1,3,5shutdown-r+5每小时10分钟,40分钟执行用户目录下的innd/bbslin命令:10,40****innd/bbslink1分钟执行用户的commandbin/accountinthedirectory:1****bin/account每天凌晨3点20分在用户目录下执行以下两条命令(每条命令之间用;隔开):203***(/bin/rm-fexpire.lslogins.bad;bin/expire$#@62;expire.1st) 每年一月和四月,4日到9日的3:12和3:55执行命令/bin/rm-f单独expire.1st,将结果添加到mm.txt文件后(mm.txt文件在用户自己的目录下)。12,5534-91,4*/bin/rm-fexpire.1st$#@62;$#@62;mm.txt每天9:00、13:00、16:00执行命令,and18:00:179,13,16,18***命令注:本文转载,原文地址:Linux下crontab定时任务执行命令详解
