zoukankan      html  css  js  c++  java
  • 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个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

    这里时间只是到分,有两种方案可以按秒来运行,如下: 

     

    第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间。

    while true ;do

    command

    sleep XX //间隔秒数

    done


    第二种方案,使用crontab。

    我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。

    以下方法将每20秒执行一次

    crontab -e 
    * * * * * /bin/date
    * * * * * sleep 20; /bin/date 
    * * * * * sleep 40; /bin/date 

    说明:需要将/bin/date更换成你的命令即可


    这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录。。。如果每秒运行还是用方案一吧。

    每次编辑完某个用户的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 把日志定向出来查看。

  • 相关阅读:
    2016九大前端必备动画库
    关于页面跳转,登录刷新
    关于换行
    c++ vector 的使用
    c++ namespace的使用
    u盘文件系统故障的修复方法
    nfs的使用
    ubuntu 无声音的解决
    Yii 视图中的 $this
    Apache vhost
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314145.html
Copyright © 2011-2022 走看看