zoukankan      html  css  js  c++  java
  • linux crontab

    概念:

    1. Linux 工作排程的种类:at, cron
      • at 是个可以处理仅执行一次就结束排程的指令,不过要执行 at 时, 必须要有 atd 这个服务支持。
      • crontab 这个指令所设定的工作将会循环的一直进行下去! 可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑 /etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服务喔!
    2. Linux 上常见的例行性工作
      • 进行登录档的轮替 (log rotate):
      • 登录文件分析 logwatch 的任务
      • 建立 locate 的数据库:
      • whatis 数据库的建立
      • RPM 软件登录文件的建立:
      • 移除暂存档
      • 与网络服务有关的分析行为
    3. at 的运作方式
      • 事实上,我们使用 at 这个指令来产生所要运作的工作,并将这个工作以文本文件的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务的取用与执行了。
      • /etc/at.allow 与 /etc/at.deny 这两个档案来进行 at 的使用限制。先匹配允许的,没有就匹配拒绝如果两个档案都不存在,那么只有 root 可以使用 at 这个指令。
    4. 循环执行的例行性工作排程
      • 当用户使用 crontab 这个指令来建立工作排程以后,该项工作就会被记录到 /var/spool/cron/ 里面去了,而且是以账号来作为判别的喔!另外, cron 执行的每一项工作都会被记录到 /var/log/cron 这个登录档中,所以啰,如果你的 Linux 不知道有否被植入木马时,也可以搜寻一下 /var/log/cron 这个登录档呢!
      • /etc/cron.allow     /etc/cron.deny
    5. 系统的配置文件: /etc/crontab
      1. 01 * * * * root run-parts /etc/cron.hourly:
        • run-parts 一个 bash script 啦!如果你直接进入 /usr/bin/run-parts 去看看, 会发现这支指令会将后面接的『目录』内的所有档案捉出来执行!这也就是说『 如果你想让系统每小时主动帮你执行某个指令,将该指令写成 script,并将该档案放置到 /etc/cron.hourly/ 目录下即可』的意思!
      2. 一些注意事项
        • 资源分配不均的问题
          • 流量
          • 区域内其他 PC 的流量侦测
          • CPU 使用率
          • RAM 使用率
          • 在线人数实时侦测
          • 范例:[root@www ~]# vi /etc/crontab
            • 1,6,11,16,21,26,31,36,41,46,51,56 * * * * root CMD1
            • 2,7,12,17,22,27,32,37,42,47,52,57 * * * * root CMD2
            • 3,8,13,18,23,28,33,38,43,48,53,58 * * * * root CMD3
            • 4,9,14,19,24,29,34,39,44,49,54,59 * * * * root CMD4
            • 多个每五分钟执行一次的命令
        • 取消不要的输出项目
          • 直接以『命令重导向』将输出的结果输出到 /dev/null 这个垃圾桶当中就好了
        • 安全的检验
          • 很多时候被植入木马都是以例行命令的方式植入的,所以可以藉由检查 /var/log/cron 的内容来视察是否有『非您设定的 cron 被执行了?』这个时候就需要小心一点啰!
        • 周与日月不可同时并存
    6. 可唤醒停机期间的工作任务 -----------anacron
      1. anacron 并不能指定何时执行某项任务, 而是以天为单位或者是在开机后立刻进行 anacron 的动作,他会去侦测停机期间应该进行但是并没有进行的 crontab 任务,并将该任务执行一遍后,anacron 就会自动停止了。
      2. anacron 与 /etc/anacrontab
      3. anacron 并不需要额外的设定,使用默认值即可!只是我们的 CentOS 只有在开机时才会执行 anacron 就是了。
        1. chkconfig --list anacron -----检查是否开机执行

    命令:

    1. atd 的启动与 at 运作的方式
      • /etc/init.d/atd restart  启动服务
      • chkconfig atd on 开机自动启动
      • at [-mldv] TIME  进入到一个shell环境
      • at -c 工作号码
        • -m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
        • -l :at -l 相当于 atq,列出目前系统上面的所有该用户的 at 排程;
        • -d :at -d 相当于 atrm ,可以取消一个在 at 排程中的工作;
        • -v :可以使用较明显的时间格式栏出 at 排程中的任务栏表;
        • -c :可以列出后面接的该项工作的实际指令内容。
        • TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,
          • 格式有: HH:MM ex> 04:00
            • HH:MM YYYY-MM-DD ex> 04:00 2009-03-17
            • HH:MM[am|pm] [Month] [Date] ex> 04pm March 17
            • HH:MM[am|pm] + number [minutes|hours|days|weeks]ex> now + 5 minutes ex> 04pm + 3 days
      • at 工作的管理
        • atq ---------------------查询目前主机上面有多少的 at 工作排程?
        • atrm [jobnumber] -移除
      • batch:系统有空时才进行背景任务
        • batch 23:00 2009-3-17  也是用 at 的工作管理
    2. 循环执行的例行性工作排程
      • crontab [-u username] [-l|-e|-r]
        • -u :只有 root 才能进行这个任务,亦即帮其他使用者建立/移除 crontab 工作排程;
        • -e :编辑 crontab 的工作内容
        • -l :查阅 crontab 的工作内容
        • -r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。
    3. 可唤醒停机期间的工作任务 -----------anacron
      • anacron 与 /etc/anacrontab
        • anacron [-sfn] [job]..
        • anacron -u [job].
          • -s :开始一连续的执行各项工作 (job),会依据时间记录文件的数据判断是否进行;
          • -f :强制进行,而不去判断时间记录文件的时间戳;
          • -n :立刻进行未进行的任务,而不延迟 (delay) 等待时间;
          • -u :仅更新时间记录文件的时间戳,不进行任何工作。
          • job :由 /etc/anacrontab 定义的各项工作名称。
      • 范例:anacron 若下达『 anacron -s cron.daily 』时,他会这样运作的:
        • 由 /etc/anacrontab 分析到 cron.daily 这项工作名称的天数为 1 天;
        • 由 /var/spool/anacron/cron.daily 取出最近一次执行 anacron 的时间戳;
        • 由上个步骤与目前的时间比较,若差异天数为 1 天以上 (含 1 天),就准备进行指令;
        • 若准备进行指令,根据 /etc/anacrontab 的设定,将延迟 65 分钟
        • 延迟时间过后,开始执行后续指令,亦即『 run-parts /etc/cron.daily 』这串指令;
        • 执行完毕后, anacron 程序结束
  • 相关阅读:
    ListView的优化
    RotateAnimation详解
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Java 完美判断中文字符的方法
    详细解析Java中抽象类和接口的区别
    Android中如何实现多行、水平滚动的分页的Gridview?
    Android实现多页左右滑动效果,支持子view动态创建和cache
    android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
    Android TextView文字横向自动滚动(跑马灯)
    android自定义TabWidget样式
  • 原文地址:https://www.cnblogs.com/guojintao/p/5744350.html
Copyright © 2011-2022 走看看