zoukankan      html  css  js  c++  java
  • Linux学习之九Linux系统定时任务

    Linux系统定时任务

    在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务。

    1. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

    使用命令/etc/init.d/crond status检查服务是否处于运行状态,

    使用命令/etc/init.d/crond start 启动定时任务

    使用命令chkconfig crond on 设置开机启动

    [root@localhost ~]# /etc/init.d/crond status
    
    crond is stopped
    
    [root@localhost ~]# /etc/init.d/crond start
    
    Starting crond: [ OK ]
    
    [root@localhost ~]# chkconfig crond on
    
    [root@localhost ~]#
    1. 定时任务的写法

    crontab -e    编辑定时任务

    crontab -l 查看定时任务

    *    *    *    *    *    cmd

    minute hour day month week command

    分    时    日    月    周    +    执行的命令

    */    表示间隔

    ,    表示和

    • 表示多少到多少
    1. 定时任务的取值范围,可以使用命令cat /etc/crontab查看相应配置

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

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # For details see man 4 crontabs

    # Example of job definition:

    # .---------------- minute (0 - 59)

    # | .------------- hour (0 - 23)

    # | | .---------- day of month (1 - 31)

    # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

    # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    # | | | | |

    # * * * * * user-name command to be executed

    每个时间参数的取值范围为0-59,0-23,1-31,1-12,0-6(7相当于0)

    1. 注意事项

    a.    定时任务使用命令时最好使用绝对路径

    b.    每个定时任务(脚本等)一定要加注释(君子协议)

    c.    特殊符号需要转义如:

    * * * * * echo "`date +\%F\ \%T`" >>/tmp/time.txt

    d.    最好不要让执行的命令有输出,如果避免不了有输出,就定向到空(黑洞)

    避免的做法:

    */1 * * * * /usr/sbin/ntpdate ntp5.aliyun.com >/dev/null 2>/dev/null

    */1 * * * * /usr/sbin/ntpdate ntp5.aliyun.com &>/dev/null

    标准输出    1>(默认为标准输出)

    错误输出    2>

    黑洞:/dev/null 重定向到黑洞中的内容全部消失

    e.    定时任务中严禁使用相对路径

    f.    尽量使用crontab -e来添加定时任务

    crontab -e定时任务的文件路径实际就是/var/spool/cron/root可以换在此文件中编辑

    原因是:crontab带语法检查出现错误时会报错,适合做定时任务测试

    g、    注意:定时任务的命令在编辑之前一定要在命令行先测试成功后再用

    5、定时任务举例

    1)每隔一分钟追加输出重定向1234567到a.txt

    */1 * * * * echo 1234567 >>/tmp/a.txt

    [root@localhost ~]# crontab -e

    crontab: installing new crontab

    [root@localhost ~]# crontab -l

    */1 * * * * echo 1234567 >>/tmp/a.txt

    2)每隔两小时每十分钟重启一下sshd服务

    10 */2 * * * /etc/init.d/sshd restart

    3)每周三下午六点整echo jiaozuoye

    00 18 * * 3 echo jiaozuoye

    4)每天下午的两点和四点整echo 京东秒杀

    00 14,16 * * * echo "京东秒杀"

    5)每年的3月,6月,11月的1-7号的早上八点到晚上八点echo "大酬宾"

    00 8-20 1-7 3,6,11 * echo 大酬宾

    6)#上课

    30 9 * * 0 /oldboy.sh &>/dev/null

    方法一:

    echo '#上课

    > 30 9 * * 0 /oldboy.sh &>/dev/null>>/var/spool/cron/root

    方法二:

    echo -e '#上课\n30 9 * * 0 /oldboy.sh &>/dev/null' >>/var/spool/cron/root

    6、在定时任务的创建过程中,如果系统开启了postfix邮件服务,则每创建成功一个定时任务都会收到一封邮件

    /etc/init.d/postfix start 启动邮件服务

    mail    查看邮件

    U 31 Cron Daemon Sun Apr 1 16:05 24/768 "Cr"

    U表示未看    最下面可查看邮件数量

    输入数字查看某一封邮件

    输入q退出

    mailq     查看未发生的邮件队列

    >/var/spool/mail/root 清空系统邮件

    每个用户的邮件都放在/var/spool/mail下以用户名命名的目录下面

    博主原创文章,转载请务必注明出处

  • 相关阅读:
    【原创】Jquery.Greybox.js(Jquery框架下的Greybox源代码)
    【超级原创】截至2009年10月20日双色球中奖号码前500期统计
    ASP.NET C#动态生成html页面
    【原创】JS判断浏览器类型
    【原创】用SQL语句删除重复记录的方法总结
    【原创】 ASP.NET C#反射简单实例应用
    【原创】UpdatePanel 中文乱码的终极解决方案(非常完美)
    【原创】ASP.NET C# 盗取中国银行汇率表
    【原创】ASP.NET 小偷模块(功能罕见)
    ASP.NET C# 货币转换函数 中文大写金额 英文金额
  • 原文地址:https://www.cnblogs.com/ssgeek/p/9220467.html
Copyright © 2011-2022 走看看