循环执行的例行性工作crond

一、循环执行的例行性工作调度是由crond这个系统服务来控制的。我们也可以限制使用crontab的用户账号。

/etc/cron.allow 将可以使用crontab的账号写入其中,若不在该文件内的用户则不可使用crontab。
/etc/cron.deny 将不可以使用crontab的账号写入其中,若不在该文件内的用户则可使用crontab。

当用户使用crontab新建工作调度之后,该项工作就会被记录到/var/spool/cron/里面,并且是以账号来判别的。cron执行的每一项工作都会被记录到/var/log/cron这个日志文件中。
循环执行的例行性工作crond

命令参数

 crontab [-u user] [-l | -r | -e] 
-u:只有root才能进行这个任务,帮某个用户新建/删除crontab
-e:编辑crontab的工作内容
-l:查阅crontab的工作内容
-r:删除所有的crontab的工作内容

文件格式为:每一行为一个工作,每项工作具有六个字段。

代表意义 分钟 小时 日期 月份 命令
数字范围 0-59 0-23 1-31 1-12 0-7 执行的命令

注意:0和7都代表周天

特殊字符 含义
* 代表任何时刻
代表分隔时段
代表一段时间范围
/数字 指定时间的间隔频率,例如每3分钟进行一次,*/3

例子一:每天早上9点整说good morning
0 9 * * * wall “good morning”
wall命令用于向系统当前所有打开的终端上输出信息。通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。

例子二:指定某些用户不可以执行计划任务
/etc/cron.deny 文件中添加上拒绝执行计划任务的用户

二、系统的例行性任务
编辑文件vim /etc/crontab
命令格式有少许变化

[root@localhost ~]# vim /etc/crontab 
SHELL=/bin/bash     #运行计划所使用的shell 默认是bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin #指定命令执行环境变量路径
MAILTO=root  # MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mo
n,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
#user-name表示执行命令的用户是谁
#command to be executed执行的命令

当需要同一时间执行多个脚本时,可以将这多个脚本放在一个目录下,然后使用run-parts来执行。
run-parts:该命令可将后面接的“目录”内的所有文件找出来执行。

例子:在文件最下面写入

0 9 * * * sshuser  run-parts  /root/cron_script

三、可唤醒停机期间的工作任务
anacron 可以处理关机状态时未执行的计划任务,anacron不能指定何时执行某项任务,而是以天为单位或是在开机后立刻进入anacron的操作(/etc/anacrontab)。它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了。

[root@localhost ~]# vim /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
  
# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.
daily
7       25      cron.weekly             nice run-parts /etc/cron.
weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.
monthly
~       
#可以继续添加         
上一篇:error - momentjs - Deprecation warning: value provided is not in a recognized RFC2822 or ISO format


下一篇:Lesson7——Pandas 使用自定义函数