当前位置: 首页 > Linux

crontab的用法和例子

时间:2023-04-06 01:31:41 Linux

注:本文摘自LinuxProbe。如有侵权,请联系作者删除!crontab配置文件Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务由cron(crond)系统服务控制,默认启动。用户自己设置的定时任务使用crontab命令。CentOS系统下cat/etc/crontab配置文件可以看到如下解释:SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/#详见man4crontabs#作业定义示例:#.----------------分钟(0-59)#|.------------小时(0-23)#||.------------月中的第几天(1-31)#|||.--------月(1-12)或一月、二月、三月、四月...#||||.----星期几(0-6)(星期日=0或7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六#||||#*****执行的user-name命令的前四行用于配置crond任务运行的环境变量。第一行的SHELL变量指定系统将使用哪个shell,这里是bash;第二行PATH变量指定系统执行命令的路径;第三行的MAILTO变量指定crond的任务执行信息将通过邮件发送给root用户。如果MAILTO变量的值为空,则表示不会向用户发送任务执行信息;第四行中的HOME变量指定执行命令或脚本时要使用的主目录。用户需要定时执行的任务,如用户数据备份、定时邮件提醒等,用户可以使用crontab工具自定义自己的定时任务。所有用户定义的crontab文件都存储在/var/spool/cron目录中。它的文件名与用户名相同。crontab文件含义在用户创建的crontab文件中,每一行代表一个任务,每一行中的每个字段代表一个设置。它的格式分为六个字段。六段为要执行的命令段,格式如下:分时日月周命令分时日月周命令在以上各字段中,还可以使用以下特殊字符:“”表示取值范围内的所有数字,如month字段为,则表示1到12个月;“/”表示每隔一定的时间间隔。例如minute字段为*/10,表示每10分钟执行一次。“-”表示从某个区间开始的范围,是闭区间。例如“2-5”表示“2、3、4、5”,小时字段中的0-23/2表示在0~23点钟范围内每2小时执行一次。","分散的数字(不一定是连续的),如1,2,3,4,7,9。注:由于各地每周的第一天不一样,Sunday=0(第一天)或者Sunday=7(最后一天)。crontab命令详解crontab[-uuser]filecrontab[-uuser][-i]{-e|-l|-r}?-uuser:用于为某个用户设置crontab服务;?file:file是命令文件的名称,意思是将file作为crontab任务列表文件加载到crontab中;?-e:编辑一个用户的crontab文件的内容,如果没有指定用户,则表示当前用户;?-l:显示用户的crontab文件内容,如果没有指定用户,则表示当前用户;?-r:从/var/spool/cron目录中删除用户的crontab文件。?-i:删除用户的crontab文件时给出确认提示。crontab注意事项1、crontab有两种编辑方式:直接编辑/etc/crontab文件和crontab–e,其中/etc/crontab中的定时任务是系统中的定时任务,用户的定时任务需要通过crontab–ee2、每次编辑用户的cron设置后,cron会自动在/var/spool/cron下生成一个与用户同名的文件,用户的cron信息会记录在这个文件中。不能直接编辑,只能用crontab-e编辑。3、crontab中的命令尽量使用绝对路径,否则经常会因为路径错误导致任务执行失败。4、新建的cron作业不会立即执行,至少需要2分钟才能执行。您可以重新启动cron以立即执行。5.%在crontab文件中表示“换行”,所以如果脚本或命令中包含%,则需要使用%进行转义。crontab配置实例每分钟执行一次command(因为cron默认每1分钟扫描一次,所以都是*)*****command在每小时的第3和15分钟执行command3,15****command执行command3,158-11***每天上午8-11点的第3、15分钟执行command3,158-11*/2*每2天上午8-11的第3、15分钟*command执行command3,158-11每周一早上8点到11点的第3和15分钟**1commandRestartsmb30at21:30everynight21***/etc/init.d/smbrestart在4:45重启smb45每月1号、10号、22号41,10,22**/etc/init.d/smbrestart每周六周日1:10重启smb101**6,0/etc/init.d/smbrestart每天18:00到23:00之间每30分钟重新启动smb0,3018-23***/etc/init.d/smbrestart每小时重新启动smb**/1***/etc/init.d/smbrestart在晚上11点到早上7点之间每小时重新启动smb*23-7/1***/etc/init.d/smbrestartmonthly重新启动smb0114*mon-wed/etc/init.d/smbrestart4号每小时和每周一到周三11点执行/etc/cron.hourly目录下的脚本01***rootrun-parts/etc/cron.hourly