Linux提供了crontab和at命令使用户可以对任务进行调度安排,让任务在指定的时间自动运行并完成相关的工作
1、crontab设置周期性的定时任务
crontab可以根据分、时、日、月、周的组合来调度任务自动执行。用户只要在crontab中设置好任务的启动时间即可。
1.1、命令格式:
crontab [-u user] file
crontab [-u user] [-l | -r | -e | -i | -s]
-u user :指定更改的是哪个用户的计划任务。如果不设置,则默认会更改当前运行命令用户的计划任务列表。改选只有root用户能使用,一般用户只能更改自己的任务列表
-l :输出当前的计划任务列表
-r :删除当前的计划任务列表
-e :更改用户的计划任务列表
-i :与-r相同,但删除计划任务列表时会提示用户确认
crontab命令来源于crond服务,在执行crontab命令时要先确认crond服务有没有启动。
1.2编辑计划任务
使用命令crontab -e 即可进入计划任务的编辑界面。编辑计划任务的格式如下:
分(0~59) 时(0~23) 日(1~31) 月(1~12) 周(0~7,0,7代表周日) 可执行语句(一般是可执行脚本的快捷方式)
* :匹配范围内任意时间
, :表示多个不连续的时间 (周:1,3,5 表示每周1,3,5)
- :表示连续时间(日:1-4 表示每月的1到4号)
/n :指定时间频率 例如(时:6~12/2 表示6~12点每隔两个小时)
举例:创建test.sh脚本,在脚本中输入“/bin/date >> /tmp/test.log”,并对这个脚本赋予x权限 chmod +x test.sh
创建计划任务:crontab -e
* * * * * /root/test.sh #每分钟执行一次脚本
使用tail -f 命令查看/tmp/test.log文件则会看到每过一分钟就会有新的内容输入到这个文件中
1.3、计划任务授权
Linux系统默认所有人都可以查看和使用计划任务,通过白名单和黑明单可以控制那些用户可以使用计划任务。
/etc/cron.allow :白名单
/etc/cron.deny :黑明单
.allow文件的优先级高,若allow文件存在,则允许指定用户使用,否则检查.deny文件的用户,除指定用户外的所有用户都有权使用crond服务。若这两个文件都不存在,则只允许root用户使用
1.4、系统默认的计划任务
全局配置文件:/etc/crontab
系统计划任务:/etc/cron.hourly/*
/etc/cron.daily/*
/etc/cron.weekly/*
/etc/cron.monthly/*