• 定时任务


    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
    
  • 相关阅读:
    32.ExtJS简单的动画效果
    set、env、export差分
    【翻译】Why JavaScript Is and Will Continue to Be the First Choice of Programmers
    J2EE请求和响应—Servlet
    Leetcode: Spiral Matrix. Java
    Android正在使用Handler实现信息发布机制(一)
    Android开发工具综述,开发人员必备工具
    Android 从硬件到应用程序:一步一步爬上去 5 -- 在Frameworks蒂姆层硬件服务
    HDU 2828 DLX搜索
    2016第三周三
  • 原文地址:https://www.cnblogs.com/1naonao/p/11253069.html
Copyright © 2020-2023  润新知