热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

linux入门之任务计划crontab

crontab介绍我们时常会有一些定期定时的任务,如周期性的清理一下/tmp,周期性的去备份一次数据库,周期性的分析日志等等。而且有时候因为某些因素的限制,执行该任务的时间会很尴尬。本文同你

crontab介绍

我们时常会有一些定期定时的任务,如周期性的清理一下/tmp,周期性的去备份一次数据库,周期性的分析日志等等。而且有时候因为某些因素的限制,执行该任务的时间会很尴尬。本文同你一起掀开Linux系统自动任务的神秘面纱。

1、基本概念

  • crontab自动任务的理解
    • 用于设置周期性被执行的指令
    • 该命令读取指令存放于crontab文件中供后续读取和执行
    • crond为其守护进程,一般在后台默默运行,不间断的检查是否有预定的作业需要执行。
  • crontab命令的格式和参数
    • 分 时 日 月 星期 <命令> <日志>
      sudo service rsyslog start (已启动的可以不起)
    • 启动crontab
      - sudo cron -f &
    • 操作截图如下

      启动日志和crontab

    crontab 新增任务

    • 使用vi编辑器进行编辑,输入i切到编辑模式

      • - crontab -e

        新增任务计划
    • 查看结果

      • 没有生成文件?日志报错“no mta installed discarding output”
        sudo tail -f /var/log/syslog

        报错日志
      • 查找原因,发现 书写格式有误 ,需在date之后加个空格。
        */1 * * * * touch /home/shiyanlou/$(date  +\%Y\%m\%d\%H\%M\%S)

        已生成20160716142101文件

crontab使用

一个是linux系统,是存在多个用户的,那么每个用户建立的crontab是否会有冲突呢?当然不会冲突,要是冲突,就没有安全性和可靠性而言了。那么具体是怎么做到的呢?

1、配置文件的独立性

  • 不同用户,在/var/spool/cron/crontabs里存在一个对应的配置文件
    • 保证了 隔离、独立、有效
    • 如下图,存在 root和shiyanlou 两个用户的crontab

      crontab独立性

2、守护进程cron自动执行

  • 在etc目录下存在如下cron文件,这几个文件会让你的任务计划安装计划正确执行
    • 1、 /etc/cron.daily,目录下的脚本会每天让执行一次,在每天的6点25分时运行;
    • 2、 /etc/cron.hourly,目录下的脚本会每个小时让执行一次,在每小时的17分钟时运行;
    • 3、/etc/cron.mouthly,目录下的脚本会每月让执行一次,在每月1号的6点52分时运行;
    • 4、 /etc/cron.weekly,目录下的脚本会每周让执行一次,在每周第七天的6点47分时运行;
    • 如下图所示

      etc下cron文件

crontab进阶

设定crontab之后,系统管理员最关心的是crontab任务有没有按照计划执行完毕,执行过程中有没有出错?那么我们可以通过查看日志文件来了解请情况。

1、crontab系统日志

  • 默认的系统日志 存在于 /var/log/syslog 文件里
  • 自定义启用cron日志 通过编辑 /etc/rsyslog.d/50-default.conf配置文件,达到启用cron.log专用日志,详见下图

    系统日志

2、crontab执行日志

  • 在crontab命令里,可以自定义执行日志的路径和名称【分 时 日 月 星期 <执行的命令> <执行的日志>】,如下两个实例:
    1) * 8 * * 0  /home/shiyanlou/mybin/back.sh 1>>/home/shiyanlou/back.log 2>>/home/shiyanlou/back.log
    2) * 8 * * 0 /home/shiyanlou/mybin/back.sh >>/home/shiyanlou/back.log 2>&1
    • (1)和(2)是两种不同的写法,但是含义是一样的
    • 其中,“2>&1” 表示 2跟1使用同一个日志文件
    • 其中, 1 表示执行的标准日志输出 ;2表示 执行异常的日志输出

作业

撰写一个crontab任务计划,使其完成在“每周日的上午8点自动执行一次备份脚本 back.sh”

  • back.sh 是对该目录/home/shiyanlou/Code下的blog目录文件进行压缩打包;
  • 结合上面设定的crontab自动任务,现补充 back.sh的脚本如下:

    备份脚本

推荐阅读
  •   crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执 ... [详细]
  • Linux下怎么使用crontab命令
    本篇内容主要讲解“Linux下怎么使用crontab命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Li ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了如何在 Linux 系统中使用 Cron 进行任务调度,包括查看日志、显示和编辑用户任务列表的方法,以及重启 Cron 服务的具体操作。 ... [详细]
  • Linux下浅谈crond与crontab的命令用法
    一、什么是crond?crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成Linux操作系统之后,默认便会启动 ... [详细]
  • 用.sh文件来完成任务,但现在有个项目直接用url就行。一般系统不会有crontabShell#安装crontab:yuminstallcronta ... [详细]
  • 前言crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较 ... [详细]
  • 第一种,通过mancrontab查看crontab的帮助手册第二种列出几个简单示例Crontab命令的格式为:crontab–l|-r|-e|-i[username]-l显示用户的 ... [详细]
  • 一,crontab服务的简介二、安装cron服务安装cron服务:--yuminstallvixie-cron--yuminstallc ... [详细]
  • 关于定时执行一个PHP文件办法,该如何解决
    后端开发|php教程crontab,windows,PHP,schedule,7302763后端开发-php教程关于定时执行一个PHP文件的方法简搜源码,ubuntu找不到域名,启 ... [详细]
  • 这篇文章将为大家详细讲解有关如何解析crontabphp自动运行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。cront ... [详细]
  • 在crontab定时执行python脚本,在shell下没有问题,在crontab中报nomodule,找不到安装的库。1crond服务未启动crontab不是Linux内核的功能, ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文将详细介绍如何利用PHP进行实时监控及信息查看,包括PHP版本信息、Linux服务器状态以及客户端请求记录等。 ... [详细]
  • 使用linux命令crontab间隔时间执行其它命令-1.1etccrontab文件在etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的 ... [详细]
author-avatar
D大龙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有