• Linux 定时任务


    实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。

    名词解释:

       cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。

    软件包安装:

    要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:

    vixie-cron软件包是cron的主程序。
    crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

    查看是否安装了cron软件包: rpm -qa|grep vixie-cron

    查看是否安装了crontabs软件包:rpm -qa|grep crontabs

    如果没有安装,则执行如下命令安装软件包(软件包必须存在)
    rpm -ivh vixie-cron-4.1-54.FC5*
    rpm -ivh crontabs*

    如果本地没有安装包,在能够连网的情况下可以在线安装

    yum install vixie-cron
    yum install crontabs

    查看crond服务是否运行:

    pgrep crond

    /sbin/service crond status

    ps -elf|grep crond|grep -v "grep"

    crond服务操作命令:

    /sbin/service crond start //启动服务  
    /sbin/service crond stop //关闭服务  
    /sbin/service crond restart //重启服务  
    /sbin/service crond reload //重新载入配置

    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

    /sbin/service crond start //启动服务

      /sbin/service crond stop //关闭服务

      /sbin/service crond restart //重启服务

      /sbin/service crond reload //重新载入配置

     

     

      你也可以将这个服务在系统启动的时候自动启动:

     

      在/etc/rc.d/rc.local这个脚本的末尾加上:

      /sbin/service crond start

     

      现在Cron这个服务已经在进程里面了,我们就可以用这个服务了

    -------------------------------------

    以Linux下定时备份mysql为例说明下

    写一个简单的mysql备份shell脚本

    vi

    #!/bin/sh
    da=`date +%Y%m%d%H%M%S`
    mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da

    保存为 mysqlbak.sh

    然后crontab-e

     0 3 * * * /root/mysqlbak.sh 

    保存退出

    相关命令----------------

    crontab file [-u user]-用指定的文件替代目前的crontab。
    crontab-[-u user]-用标准输入替代目前的crontab.
    crontab-1[user]-列出用户目前的crontab.
    crontab-e[user]-编辑用户目前的crontab.
    crontab-d[user]-删除用户目前的crontab.
    crontab-c dir- 指定crontab的目录。
    crontab文件的格式:M H D m d cmd.
    M: 分钟(0-59)。
    H:小时(0-23)。
    D:天(1-31)。
    m: 月(1-12)。
    d: 一星期内的天(0~6,0 表示星期天)
       除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

    每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这 个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

    查看crontab 执行的日志,可以在/var/log/cron* 查看,或者 0 3 * * * /root/mysqlbak.sh >/var/log/mysqlbak.log 2>&1 把日志定向出来查看。

     当然定时任务也可以自行制定配置文件

     可以把他放到/etc/cron.d 中

    使用者想要建立循環型工作排程時,使用的是 crontab 這個指令啦~不過,為了安全性的問題, 與 at 同樣的,我們可以限制使用 crontab 的使用者帳號喔!使用的限制資料有:

    • /etc/cron.allow:
      將可以使用 crontab 的帳號寫入其中,若不在這個檔案內的使用者則不可使用 crontab;

    • /etc/cron.deny:
      將不可以使用 crontab 的帳號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用 crontab 。

    與 at 很像吧!同樣的,以優先順序來說, /etc/cron.allow 比 /etc/cron.deny 要優先, 而判斷上面,這兩個檔案只選擇一個來限制而已,因此,建議你只要保留一個即可, 免得影響自己在設定上面的判斷!一般來說,系統預設是保留 /etc/cron.deny , 你可以將不想讓他執行 crontab 的那個使用者寫入 /etc/cron.deny 當中,一個帳號一行!

    當使用者使用 crontab 這個指令來建立工作排程之後,該項工作就會被紀錄到 /var/spool/cron/ 裡面去了,而且是以帳號來作為判別的喔!舉例來說, dmtsai 使用 crontab 後, 他的工作會被紀錄到 /var/spool/cron/dmtsai 裡頭去!但請注意,不要使用 vi 直接編輯該檔案, 因為可能由於輸入語法錯誤,會導致無法執行 cron 喔!另外, cron 執行的每一項工作都會被紀錄到 /var/log/cron 這個登錄檔中,所以囉,如果你的 Linux 不知道有否被植入木馬時,也可以搜尋一下 /var/log/cron 這個登錄檔呢!

    参考:

    http://blog.csdn.net/jbgtwang/article/details/7995801

    http://linux.vbird.org/linux_basic/0430cron.php

    http://linux.vbird.org/linux_basic/0430cron.php#crontab_user

  • 相关阅读:
    最优匹配问题
    树的最大独立集
    koa2学习(一)
    vue源码阅读(一)
    一直以为错的一个问题,记录一下
    关于 vuex 的使用忠告
    《javascript设计模式与开发实践》--- (单一职责原则)
    心累
    node 学习(二)
    node 学习(一)
  • 原文地址:https://www.cnblogs.com/xd502djj/p/1501227.html
Copyright © 2020-2023  润新知