系统定时任务cron

操作系统定时任务

  • 定时任务概念
    可以固定一个时间,系统自动执行某个脚本/命令
    定时任务可代替人工自动完成一下任务

  • 定时任务常用场景
    1.时间信息同步操作
    2.规划一个不忙的时间进行备份操作

  • 定时任务可实现的方法
    1.cronie 常用定时任务软件,默认系统已安装可灵活设置时间
    2.atd 只能执行一次无法长期生效
    3.anacron 不适合服务器应用 系统默认固定定时时间,只能按固定时间执行

  • 系统默认定时任务文件
    不需要自己进行设置时间 系统规定了时间
    1./etc/cron.hourly每小时执行目录中的脚本
    2./etc/cron.daily每天固定时间执行目录中脚本文件
    3./etc/cron.weekly每周固定时间执行目录中脚本文件
    4./etc/cron.monthly每月固定时间执行目录中脚本文件

配置定时任务

  • 定时任务主要关联 一个任务,两个文件
    命令crontab设置和查看定时任务
    语法crontab 参数
    参数:
    -l查看设置的定时任务
    -e编辑定时任务 自带语法检查功能

  • 定时任务配置文件
    /var/log/cron定时任务日志文件
    /var/spool/cron/用户名xx用户设置定时任务配置文件

  • 准备工作 查看自己的定时任务服务是否开启
    systemctl status crond
    临时开启 systemctl start crond
    永久开启systemctl enable crond

  • 定时任务编写格式介绍
    cat /etc/crontab可以看到定时任务介绍

[root@zin ~]# cat /etc/crontab

SHELL=/bin/bash                      <--解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin   <--默认只能识别这几个目录下的命令 
MAILTO=root                             可以使用脚本开头对PATH重新定量识别可更多命令
# For details see man 4 crontabs       
# Example of job definition:
 .---------------- minute (0 - 59)             第一个*代表分钟
 |  .------------- hour (0 - 23)               第二个*代表小时
 |  |  .---------- day of month (1 - 31)       第三个*代表日期
 |  |  |  .------- month (1 - 12)              第四个*代表月份
 |  |  |  |  .---- day of week (0 - 6)         第五个*代表星期
 |  |  |  |  |
 *  *  *  *  * user-name  command to be executed
 编写格式为前面写入时间 后面写入脚本/命令(尽量绝对路径书写)

定时任务编辑/常见错误

  • 编辑定时任务
[root@zin ~]# crontab -e   (进入定时任务编辑模式)
*/2 * * * * cp /etc/hosts /root/hosts &>/dev/null
(每隔两分钟将文件备份)
0 1-3 * * * sh /root/tar_jb &>/dev/null
(每天1点执行脚本并将成功错误信息都追加到/dev/null文件)

*/nn=几就是n时执行一次
连续时间可以用n-m来连接
不连续的行可以用n,m连连接
dev/null黑洞文件 不占用地方

  • 小问题一
    postfix邮件服务开启时 定时任务的报错信息会发送到/var/spool/mail/用户名文件内 block资源会被消耗
    postfilx邮件服务关闭时 定时任务产生的报错信息会发送到/var/spool/postfix/maildrop/目录下产生大量的小文件 大量占用inode资源
    解决办法 将定时任务的成功和报错都追加到/dev/null黑洞下
  • 小问题
    定时任务无法识别某些特殊符号
    解决 方法一 在特殊符号前加上转义符\方法二利用脚本进行定时任务

定时任务主要事项

定时任务编写注意事项:

  1. 编写定时任务需要有注释信息 (时间 编写人员 任务作用)
  2. 编写定时任务注意环境变量 命令书写为绝对路径 (默认只识别/bin或/usr/bin目录下命令)
  3. 编写定时任务注意特殊符号 需要标记转义符号 \
  4. 编写定时任务需要将输出信息定义到空 &>/dev/null
  5. 编写定时任务建议使用脚本编写
  • 脚本主要事项
  1. 编写后在测试机测试确保可用
  2. 放入定时任务时以绝对路径进行写入
  3. 调整系统时间进行测试
  4. 检查定时任务日志/var/log/cron和任务的执行结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容