简介
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务
命令格式
命令格式:crontab [-u username] [-l|-e|-r] 参数:
-u : 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;-e : 编辑crontab 的工作内容;-l : 查阅crontab的工作内容;-r : 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑
查看帮助文档
如果使用 crontab -h 会报错,但也会输出一个简写的帮助文档 正确的查看帮助文档的方法是使用 man crontab 系统的计划任务放在 /etc/crontab ,并且里面有计划参数的解析注释 <分钟> <小时> <当月的第几日> <月> <每周的第几天> <定时执行的命令>
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 命令 |
周的数字为0或7时,都代表“星期天”的意思。另外,还有一些辅助的字符,大概有下面这些:
特殊字符 | 代表意义 |
---|
*(星号) | 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。 | ,(逗号) | 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command 时间还是有五列,不过第二列是 3,6 ,代表3与6都适用 | -(减号) | 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思 | /n(斜线) | 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:/5 * * * * command 用与/5来搭配,也可以写成0-59/5,意思相同 |
基本用法
定时执行计划
创建文件,每分钟执行一次命令 vim task1.crontab
* * * * * echo `date '+\%F \%T' > ~/output.txt`
定时执行脚本
创建文件,每分钟执行一次脚本 vim task2.crontab
*/1 * * * * sh ~/test.sh`
注意事项
- 在自定义的
crontab 文件 和 crontab -e 的定时任务编辑器中,可以定义变量 - 统一时刻,只能执行一个定时任务。当运行新的任务时,之前的任务会被自动取消
- 定时计划可以用
sh 命令执行批处理文件,例如:* * * * * sh <批处理文件路径> - 定时任务的百分号
% 前面一定要加一个转义符号\ ,如果不加会被当做换行符,而不是命令 - 如果定时任务没有任何反应,一定是计划文件中的语法有误
- 由于定时任务都是在后台执行的,因此没有回显,可以通过重定向到文件,判断其是否执行成功。另外,通过
tail -f <文件绝对路径> 持续输出
|