cron定时器

使用crontab命令的方式执行定时器

所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename,使用命令增删改后自动重启服务,会有语法检查

使用

# 修改crontab文件,如果不存在则创建
crontab -e 
# 显示crontab文件
crontab -l
# 删除文件
crontab -r
# 删除前提醒用户

参数说明

[minute] [hour] [day-of-month] [month] [day-of-week] [full-path-to-shell-script]

参数 参数值 备注
minute 0-59
hour 0-23
day-of-month 0-31
month 1-12 1是一月
day-of-week 0-7 周日可以是0或者7

语法说明

标识 说明 备注
* 代表所有的取值范围内的数字 就是所有的意思
/ 代表每一定时间间隔 */10 * * * * 表示每10分执行一次
- 代表区间范围,是闭区间
, 分散的数字 可以不连续
  • 0-23/2 * * * 表示 在0~23点内每2小时执行一次

log

日志在/var/log/cron

Crontab 示例

  1. 在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * /root/bin/backup.sh
  1. 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
59 11 * * 1,2,3,4,5 echo "日志记录" >> /tmp/log.txt

下面例子与上面的例子效果一样:

59 11 * * 1-5 echo "日志记录" >> /tmp/log.txt
  1. 每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh
  1. 每个月的第一天 1:10 p.m 运行
10 13 1 * * /root/bin/full-backup.sh
  1. 每个工作日 11 p.m 运行。
0 23 * * 1-5 /root/bin/incremental-backup.sh

修改/etc/crontab方法执行定时器

只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,推荐这种方法。需要手动重启,没有语法检查

crontab -e修改语法格式不一样, 多一个 user 指定

# centOS 7

$ systemctl restart crond.service

执行crontab时遇到的问题

  1. 执行shell脚本,定时器执行了,但是脚本不生效

原因:环境变量问题,我们在登录状态执行脚本可以成功的原因是环境变量已经加载,系统登陆时会自动加载各种环境配置文件,所以我们要手动在.sh文件的#! /bin/bash下添加

#! /bin/bash
source /etc/profile
source ~/.bash_profile

# 执行的命令...
  1. 里面涉及路径的最好都是绝对路径
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容