Linux执行定时任务,一般是通过crond守护进程,用ps-ef|可以看到grepcrond|grep-vgrep.它会从三个地方读取配置文件来执行后台任务:/var/spool/cron/${USER}/etc/crontab/etc/cron.d/*这些配置文件记录了命令行和执行周期等信息。我们来看看这三类配置文件:/var/spool/cron/目录下的配置在该目录下新建一个文本文件,并以当前用户名命名。比如你当前是root账户登录的,那么vimroot,配置格式如下:*****command第一个*代表小时的第几分钟(0-59)第二个*代表一天中的第几个小时(0-23)第三个*代表每个月的第一天(1-31)第四个*代表一年中的第一个月(1-12)第五个*代表天oftheweekoftheweek(0-7,0和7都代表星期日)表示离散时间的特殊符号。例如08,12,16***表示每天8:00、12:00、16:00执行。-代表一个连续的时间范围。例如05**1-6表示在周一到周六凌晨5:00执行命令*/n表示每隔多久执行一次。例如*/10****表示每10分钟执行一次命令示例:4522***命令在每周22:45执行命令017**1命令每周17:00执行命令051,15**command每月1号和15号凌晨5:00执行命令404**1-5command每周一到周五凌晨4:40执行命令*/104***该命令每天凌晨4点每10分钟执行一次。命令001,15*1在每个月的1号和15号执行,命令在每1号0:00执行。注意:最好不要同时有星期几和日期,因为它们都定义了天。很容易混淆管理员。case*/1****echo'hello'>>/tmp/a.txt每分钟在/tmp/a.txt中添加一行hello,可以使用tail-f/tmp/a.txt观察PS:使用crontab-e的效果相当于vim/var/spool/cron/${USER}/etc/crontabConfiguration该文件负责安排维护系统的crontab和系统管理员制定的其他任务。SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/#详见man4crontabs#作业定义示例:#.--------------分钟(0-59)#|.------------小时(0-23)#||.------------月中的第几天(1-31)#|||.--------月(1-12)或一月、二月、三月、四月...#||||.----星期几(0-6)(星期日=0或7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六#|||||#*****要执行的用户名命令#run-parts00****rootrun-parts/etc/cron.hourly024***rootrun-parts/etc/cron.daily224**0rootrun-parts/etc/cron.weekly4441**rootrun-parts/etc/cron.monthlyMAILTO=root表示当/etc/crontab文件中的例行命令发生错误时,错误信息或消息显示在屏幕上将发送给谁。00****rootrun-parts/etc/cron.hourly:在#run-parts后面的命令中,可以看到五个占位符后面都是root,表示以root身份执行。/etc/cron.hourly后面跟run-parts代表这个目录(/etc/cron.hourly)下的所有可执行文件,也就是说,在每小时的00分,系统会去/etc/cron.hourly。hourly以root身份每小时执行etc/cron.hourly目录下的所有可执行文件,后面三行意思类似。可以直接把每天需要执行的命令写到/etc/cron.daily中,这样就不用crontab-e了。/etc/cron.d/目录下的配置该目录用于存放任何要执行的crontab文件或脚本。权限检查/etc目录下是否有cron.allow或cron.deny文件。作用如下:如果这两个文件不存在,只有root用户才能使用crontab命令。如果cron.allow存在但cron.deny不存在,则只有cron.allow文件中列出的用户才能使用crontab命令。如果root用户不在里面,root用户也不能使用crontab。如果cron.allow不存在而cron.deny存在,则只有cron.deny文件中列出的用户不能使用crontab命令,其他用户可以使用。如果这两个文件都存在,则列在cron.allow文件中但未列在cron.deny中的用户可以使用crontab。如果两个文件中都存在相同的用户,则查看cron.allow文件中是否存在该用户,如果cron.allow中存在该用户,则可以使用crontab命令。crontab用法crontab命令用于安装、删除或列出用于驱动cron后台进程的表。用户将需要执行的命令序列放入crontab文件中执行。-l在标准输出上显示当前的crontab。-r删除当前的crontab文件。-e使用VISUAL或EDITOR环境变量指定的编辑器来编辑当前的crontab文件。当您完成编辑离开时,编辑后的文件将自动安装。参考Linux下crontab定时执行任务命令详解
