任务计划 使用cron实现任务计划 root用户可以修改/etc/crontab文件可以实现任务计划,而普通用户无法修改此文件。crond守护进程可以在无需人工干预的情况下,根据设置的时间和日期组合来调度执行重复任务。 systemctl start crond.service #启动crond服务 systemctl enable crond.service #设置开机自启动 /etc/crontab文件说明 /etc/crontab文件是cron的默认配置文件。 SHELL=/bin/bash #使用哪个shell来执行 PATH=/sbin:/bin:/usr/sbin:/usr/bin #定义用来执行命令的路径 MAILTO=root #输出被邮寄给该出定义的用户名 #文件中的每一行表示一项任务,格式如下: minute(分钟) hour(小时) day(日期) month(月份) day of week(星期) user-name(执行命令的用户) command(执行的命令或shell脚本) 举例: 30 21 * * * root /root/backup.sh #在每天晚上的21:30执行/root/backup.sh文件 /etc/cron.d目录 除了通过修改/etc/crontab文件实现任务计划外,还可以在/etc/cron.d目录中创建文件来实现。 语法规则和/etc/crontab文件一样。 使用crontab命令实现任务计划 root用户以外的可以使用crontab命令配置cron任务,所有用户定义的crontab都被保存在/var/spool/cron目录中,并使用创建它们的用户身份来执行。 crontab [选项] [文件] -u <用户名> 用户名,如果使用自己的用户名登录,则不需要使用该选项 -e 编辑用户的crontab -l 列出用户的crontab中的内容 -r 删除用户的crontab 例: #编辑前需要设置EDITOR环境变量告诉crontab使用哪个编辑器编辑crontab #编辑用户主目录下的.bash_profile文件,加入export EDITOR=vi crontab -e #使用编辑器编辑任务计划命令 crontab -l #列出自己的crontab 控制crontab /etc/cron.allow和/etc/cron.deny文件用来限制用户对crontab的使用。这两个文件的格式都是每行一个用户。如果控制文件被修改了,crond守护进程不需要重启。如果/etc/cron.allow文件存在,那么其中列出的用户才可以使用crontab,并且/etc/cron.deny文件会被忽略。如果该文件不存在,则在/etc/cron.deny文件列出的用户都被禁止使用crontab。 默认只有/etc/cron.deny文件,需要自己手工创建/etc/cron.allow文件。 使用at实现任务计划 cron用来调度重复的任务,而at被用来在指定的时间内调度一次性的任务。 systemctl start atd #启动atd服务 at [选项] [时间参数] -f <脚本文件>:要提交的脚本文件 -l:列出当前所有等待运行的作用。 -d:清除某个作业,需要提供相应的作业标示ID -t <时间>:在指定时间提交作业 例: at now -f /root/script at -l #列出所有作业 使用anacron实现任务计划 anacron不是取代cron的,它的功能在于处理非24小时一直启动的Linux系统的cron的执行,以天、周、月为单位或是在开机后立刻运行anacron操作,他会去检查计算机停机期间应该运行但并没有运行的cron任务,并将该任务执行一遍后,anacron就自动停止了。 anacron通过分析现在的时间与时间记录文件所记载的上次执行时间,两者比较后如果发现差异,会代表在某些时候没有进行cron,此时就会检查。 (责任编辑:IT) |