zoukankan      html  css  js  c++  java
  • 定时任务

    linux定时任务

    计划任务时间管理

    crontab配置文件解析

    ot@zls ~]# vim /etc/crontab
    SHELL=/bin/bash                     #执行命令的解释器
    PATH=/sbin:/bin:/usr/sbin:/usr/bin  #环境变量
    MAILTO=root                         #邮件发给谁
    # 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
    
    # *  表示任意的(分、时、日、月、周)时间都执行
    # -  表示一个时间范围段, 如5-7点
    # ,  表示分隔时段, 如6,0,4表示周六、日、四
    # /1 表示每隔n单位时间, 如*/10 每10分钟
    

    crontab命令选项

    参数 含义
    -e 编辑定时任务
    -l 查看定时任务
    -r 删除定时任务
    -u 指定其他用户

    计划任务编写实践

    使用root用户每5分钟执行一次时间同步

    #如何同步时间
    [root@zls ~]# ntpdate time.windows.com &>/dev/null
    #配置定时任务
    [root@zls ~]# crontab -e -u root
    [root@zls ~]# crontab -l -u root
    */5 * * * * ntpdate time.windows.com &>/dev/null
    

    crond如何拒绝某个用户使用

    #1.使用root将需要拒绝的用户加入/etc/cron.deny
    [root@zls ~]# echo "oldboy" >> /etc/cron.deny
    
    #2.登陆该普通用户,测试是否能编写定时任务
    [oldboy@zls ~]$ crontab -e
    You (zls) are not allowed to use this program (crontab)
    See crontab(1) for more information
    

    计划任务如何调试

    1.crond调试
    1) 调整任务每分钟执行的频率, 以便做后续的调试。
    2) 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
    3) 命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。
    4) 通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。
    
    2.crond编写思路
    
    1.手动执行命令,然后保留执行成功的结果。
    2.编写脚本
    脚本需要统一路径/scripts
    脚本内容复制执行成功的命令(减少每个环节出错几率)
    脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
    脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
    3.执行脚本
    使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
    执行脚本成功后,复制该执行的命令,以便写入cron
    4.编写计划任务
    加上必要的注释信息, 人、时间、任务
    设定计划任务执行的周期
    粘贴执行脚本的命令(不要手敲)
    5.调试计划任务
    增加任务频率测试
    检查环境变量问题
    检查crond服务日志
    

    使用定时任务,发邮件

    #编辑邮件配置文件
    [root@zls ~]# vim /etc/mail.rc
    #发件人
    set from=253097001@qq.com
    #邮件服务器
    set smtp=smtp.qq.com
    #发件人用户名
    set smtp-auth-user=253097001@qq.com
    #发件人密码(QQ邮箱不可以使用密码,只能使用授权码)
    set smtp-auth-password=xxx
    #登录方式
    set smtp-auth=login
    #邮件服务器协议及端口
    set smtp=smtps://smtp.qq.com:465
    #忽略证书
    set ssl-verify=ignore
    #指定证书位置
    set nss-config-dir=/root/.certs
    
    #创建证书目录
    mkdir -p /root/.certs
    #进入证书目录
    cd /root/.certs
    #获取证书
    echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
    certutil -A -n "GeoTrust SSL CA" -t "C,,"  -d  ~/.certs  -i  ~/.certs/qq.crt
    certutil -A -n "GeoTrust Global CA" -t "C,,"  -d  ~/.certs  -i  ~/.certs/qq.crt
    certutil -L -d /root/.certs
    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs -i ~/.certs/qq.crt
    

    img

    img

    img

    img

    img

    编辑文件内容

    #我都是网上搜的,可能很low,见谅
    
    [root@zls ~]# vim qingshu1.txt
    我很笨,我不知道要怎么表达我心中对你的感觉。我知道牵手容易,但是牵一辈子,是很难的。可是我就是想和你牵手一起走过每个人生的路口,我不敢说我可以给你一切,但是只要是我可以给的,我都愿意而且无怨无悔。喜欢你,喜欢到都恨自己,恨自己不能当着你的面说喜欢。我不知道你会接受或者拒绝,在写这封信的时候也不去想那么多了,只是想把现在心里所有的话都写出来,让你知道,在你身边,一直有一个人,因为你的笑靥而开心,因为你的皱眉而伤神。你微笑,我可以开心好几天。就像向日葵一样,看到太阳就会露出微笑,感觉到一切的美好。你是我心中的小太阳。我,真的,想牵起你的手。
    
    [root@zls ~]# vim qingshu2.txt
    喜欢你的人很多,不缺我一个,但我爱的人很少,只有你一个!
    
    [root@zls ~]# vim qingshu3.txt
    一直想说,无论走到哪里,最想去的是你的身边。
    
    [root@zls ~]# vim qingshu4.txt
    愿我们彼此相爱,一直到时间的尽头
    
    [root@zls ~]# vim qingshu5.txt
    我相信我们可以一起,等青丝变白发
    
    [root@zls ~]# vim qingshu6.txt
    无论岁月如何变迁,我对你的爱曾从不改变
    

    编写主题,邮箱

    [root@zls ~]# cat qingshu1.txt |mail -s '致我最爱的小姐姐' 133411023@qq.com
    

    确定能够接收

    img

    编写脚本,设置定时任务

    #创建一个情书的目录
    [root@zls ~]# mkdir qingshu_dir
    #将所有情书,移动到该目录下
    [root@zls ~]# mv qingshu* qingshu_dir/
    
    #编写脚本
    [root@zls ~]# vim send_mail.sh
    #!/bin/bash
    
    qs_name=`ls -1 /root/qingshu_dir/|head -1`
    
    cat /root/qingshu_dir/${qs_name} |mail -s '致我最爱的小姐姐' 133411023@qq.com
    
    if [ $? -eq 0 ];then
            rm -f /root/qingshu_dir/$qs_name
    fi
    
    #编辑crontab
    [root@zls ~]# crontab -e
    #send qingshu to xiaojiejie by:zls
    * * * * * /bin/bash /root/send_mail.sh &>/dev/null
    
  • 相关阅读:
    POJ3320 Jessica's Reading Problem
    POJ3320 Jessica's Reading Problem
    CodeForces 813B The Golden Age
    CodeForces 813B The Golden Age
    An impassioned circulation of affection CodeForces
    An impassioned circulation of affection CodeForces
    Codeforces Round #444 (Div. 2) B. Cubes for Masha
    2013=7=21 进制转换
    2013=7=15
    2013=7=14
  • 原文地址:https://www.cnblogs.com/1naonao/p/11253069.html
Copyright © 2011-2022 走看看