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

    定时任务

    为什么要用定时任务(crond)

    ## 为什么要用crond?
    计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。或11点开启网站抢购接口,12点关闭抢占接口。计划任务主要分为以下两种使用情况:
    
    ## 1.系统级别的定时任务
    
    临时文件清理
    系统信息采集
    日志文件切割
    
    ## 2.用户级别的定时任务
    
    定时向互联网同步时间
    定时备份系统配置文件
    定时备份数据库的数据
    

    定时任务配置文件

    FBI WARNING:PATH 出现的目录,下面可执行文件,都可以不加路径直接执行。

    [root@qls ~]# vi /etc/crontab 
    
    # 定时任务的shell
    SHELL=/bin/bash
    # 环境变量
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
    # 如果定时任务执行报错,会给root用户发邮件
    MAILTO=root
    
    
    # 定时任务日志文件
    /var/log/cron
    
    # crontab -e 文件保存地址(root为指定用户,如为abc的用户创建定时任务,这里需要对应修改)
    /var/spool/cron/root
    
    

    写定时任务的潜规则:

    - 1.所有命令是用绝对路径
    - 2.复杂命令或者多个命令,尽量写到脚本中执行
    - 3.定时任务中,所有的输出内容全部放到/dev/null
    - 4.给定时任务注释
    

    crontab命令

    选项 作用
    -e edit 编辑定时任务
    -l list 查看定时任务
    -r remove 删除当前用户的定时任务
    -u 指定用户
    crontab -e							# 此处编辑的定时任务,会自动存储到下方路径中,两者是相等的
    vim /var/spool/cron/$USER
    
    crontab -l							# 列出所有定时任务
    
    crontab -l -u tcy					# 删除tcy用户创建的定时任务
    
    crontab -r	-u tcy					# 删除tcy用户的定时任务	
    
    # 启动方式
    # C6:
    /etc/init.d/crond start				 # 定时任务,服务启动和停止(默认此服务就是开启的)
    /etc/init.d/crond stop
    
    # C7
    systemctl start crond
    systemctl stop crond
    
    
    # 第一个定时任务
    crontab -e
    # 每五分钟跟阿里云同步一次系统时间 日期:xxx 谁:xxx
    */5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
    
    
    

    定时任务语法

    # 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
    
    
    分	     时        日         月        周     
    * 	      * 	    *         *         *            					 ls
    0-59     0-23      1-31      1-12       0-6(1-7) 周日:0或7				 command
    
    
    # 每天凌晨两点执行 ls 命令
    00 02 * * * /bin/ls
    
    # 每个月的1号凌晨2点执行ls命令
    00 12 1 * * /bin/ls
    
    # 每月1号和15号12点都行一次ls命令
    00 12 1,15 * * /bin/ls
    
    # 每月1号到15号12点都行一次ls命令
    00 12 1-15 * * /bin/ls
    
    # 每年的2月14号的凌晨2点,执行ls命令
    00 02 14 2 * /bin/ls
    
    # 每周日的凌晨两点执行ls命令
    00 02 * * 7 /bin/ls
    
    # 每年6月份的所有周五凌晨2点执行ls命令
    00 02 * 6 5 /bin/ls
    
    # 每个月的14号刚好是周日,那么就在凌晨2点执行ls命令
    00 02 14 * 7 /bin/ls
    
    # 哪一年2月14日刚好是周日,那么在凌晨2点执行ls命令
    00 02 14 2 7 /bin/ls
    
    # 每天的凌晨2点钟,每十分钟执行一次ls
    */10  02 * * * /bin/ls
    
    # 每分钟执行一次 ls
    * * * * *  /bin/ls
    
    # 每分钟执行一次 ls
    */1 * * * *  /bin/ls
    
    # 每年的2月14日00点执行ls命令
    00 00 14 2 *  /bin/ls
    
    # 每5分钟执行一次ls命令
    */5 * * * *  /bin/ls
    
    # 每年的1月和5月和8月的每天晚上凌晨2点执行ls命令
    00 02 * 1,5,8 * /bin/ls
    1月1日,2
    1月2日,2
    ...
    1月31日,2
    5月1日,2
    ...
    5月31日,2
    8月1日,2
    ...
    8月31,2
    
    # 每年的1月到7月和9月到12月的每天凌晨2点执行ls命令
    00 02 * 1-7,9-12 * /bin/ls
    1月1 - 31日,2
    2月1 - 28,2
    3月1 - 31日,2
    4月1 - 30日,2
    5月1 - 31日,2
    6月1 - 31日,2
    7月1 - 31日,2
    9月1 - 31日,2
    10月1 - 30日,2
    11月1 - 30日,2
    12月1 - 31日,2
    
    # 每个月的1号到8号的凌晨2点执行
    00 02 1-8 * *  /bin/ls
    1月1 - 8日,2
    2月1 - 8日,2
    3月1 - 8日,2
    4月1 - 8日,2
    5月1 - 8日,2
    6月1 - 8日,2
    7月1 - 8日,2
    8月1 - 8日,2
    9月1 - 8日,2
    10月1 - 8日,2
    11月1 - 8日,2
    12月1 - 8日,2
    
    
    # 每天晚上21点整,执行ls命令
    0 21 * * * /bin/ls
    
    # 每个月的1号和10号和22号的凌晨4点45分执行ls命令
    45 4 1,10,22 * * /bin/ls
    
    # 每个月的1号到10的凌晨4点45分执行ls命令
    45 4 1-10 * * /bin/ls
    
    # 每个月的每2天的8点到11点的3分和15分执行ls命令
    3,15 8-11 */2 * * /bin/ls
    保存时间:2020年4月26日 11点35分
    
    4月28号,8点03分 和 8点15分,9点03分 和9点15分 , 10点03分和10点15分,11点03分和11点15分执行ls命令
    4月30号
    5月1号
    5月3号
    
    # 每天的00点-7点的每个小时和23点-00点的每个小时都执行ls命令
    0 23-7/1 * * * /bin/ls
    
    # 每周一到周五的晚上21点15分执行ls命令
    15 21 * * 1-5 /bin/ls
    

    发情书给小姐姐

    # 1.配置服务器发邮件(安装发邮件服务)
    [root@qls ~]# yum install -y mailx
    # 2.修改mail的配置文件
    [root@qls ~]# 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=xxxx
    #登录方式
    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
    
    
    #将所有情书,移动到该目录下
    [root@tcy ~]# mv qingshu* qingshu_dir/
    
    #编写脚本
    [root@tcy ~]# vim send_mail.sh
    #!/bin/bash
    
    qs_name=`ls -1 /root/qingshu_dir/|head -1`
    
    cat /root/qingshu_dir/${qs_name} |mail -s '致我最爱的小姐姐' 1213261357@qq.com
    
    if [ $? -eq 0 ];then
            rm -f /root/qingshu_dir/$qs_name
    fi
    
    
    crontab -e
    # 每天5:20发情书给小姐姐
    20 05 * * * /bin/sh /root/send_lovebook.sh &>/dev/null
    

    给小哥哥写情书过程

    1. 安装mailx邮件服务

    2. 生成授权码,为发送qq邮件做准备

    3. 修改mailx配置文件,添加如下内容(光标所在内容为步骤一操作生成授权码)

    4. 针对配置文件内容,创建证书位置

    5. 进入证书目录,获取腾讯证书

    6. 首先给自己发一封邮件试试手

    7. 成功看到邮件

    1. 创建几个情书文件(后来我将情书移动到了/tmp/666/目录下)

    2. 创建脚本

    3. 写定时任务(每分钟给我男神发信息)

  • 相关阅读:
    pyhon学习日记第八天tkinter模块6
    python学习日记第八天tkinter模块5
    python学习日记第七天tkinter模块4
    python学习日记第七天tkinter模块3
    python学习日记第六天tkinter模块2
    python学习日记第六天tkinter模块学习1
    python学习日记第五天(飞机大战)
    python学习日记第四天
    python学习日记第三天(实例)
    Demo Nec
  • 原文地址:https://www.cnblogs.com/tcy1/p/12806545.html
Copyright © 2011-2022 走看看