• linux的计划任务


    查看cron是否启动

    [root@localhost ~]# ps -aux | grep cron
    root       807  0.0  0.0 126292  1604 ?        Ss   11:11   0:00 /usr/sbin/crond -n
    root     16740  0.0  0.0 112712   964 pts/0    R+   19:39   0:00 grep --color=auto cron
    
    

    创建计划任务

    命令格式如下:

    *  *  *  *  * command
    
    第一个 * : minute (0-59)
    第二个 * : hour(0-23)
    第三个 * : day of month (1-31)
    第四个 * : month (1-12)
    第五个 * : day od week (0-6)
    command  : 具体执行任务的命令 
    
    创建方式
    crontab -e
    
    # 如: 每分钟在 /home 目录下创建一个以当前的年月日时分秒为名字的空白文件
    
    */1 * * * * touch /home/$(date +\%Y\%m\%d\%H\%M\%S)
    
    说明
    “ % ” 在 crontab 文件中,有结束命令行、换行、重定向的作用,前面加 “  ” 符号转义,
    否则,“ % ” 符号将执行其结束命令行或者换行的作用,并且其后的内容会被做为标准输入发送给前面的命令
    

    查看计划任务

    [root@localhost ~]# crontab -l
    */1 * * * * touch /home/$(date +\%Y\%m\%d\%H\%M\%S)
    

    查看cron是否已启动

    ps -aux | grep cron
    或者
    pgrep cron
    
    [root@localhost ~]# ps -aux | grep cron
    root       807  0.0  0.0 126292  1604 ?        Ss   11:11   0:00 /usr/sbin/crond -n
    root     17154  0.0  0.0 112712   964 pts/0    R+   19:47   0:00 grep --color=auto cron
    
    

    查看执行结果

    [root@localhost ~]# ll /home/
    total 0
    -rw-r--r-- 1 root root  0 Nov  6 19:48 20191106194801
    -rw-r--r-- 1 root root  0 Nov  6 19:49 20191106194901
    -rw-r--r-- 1 root root  0 Nov  6 19:50 20191106195001
    -rw-r--r-- 1 root root  0 Nov  6 19:51 20191106195101
    -rw-r--r-- 1 root root  0 Nov  6 19:52 20191106195201
    -rw-r--r-- 1 root root  0 Nov  6 19:53 20191106195301
    -rw-r--r-- 1 root root  0 Nov  6 19:54 20191106195401
    

    查看执行日志

    [root@localhost ~]# tail -f /var/log/cron
    Nov  6 19:47:15 localhost crontab[17104]: (root) END EDIT (root)
    Nov  6 19:47:35 localhost crontab[17141]: (root) LIST (root)
    Nov  6 19:48:01 localhost CROND[17166]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:49:01 localhost CROND[17219]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:50:01 localhost CROND[17273]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:51:01 localhost CROND[17327]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:52:01 localhost CROND[17380]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:53:01 localhost CROND[17433]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:54:01 localhost CROND[17486]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    Nov  6 19:55:01 localhost CROND[17540]: (root) CMD (touch /home/$(date +%Y%m%d%H%M%S))
    
    

    删除计划任务

    # 删除任务计划
    [root@localhost ~]# crontab -r
    # 查看任务计划
    [root@localhost ~]# crontab -l
    no crontab for root
    

    每个用户使用crontab -e 创建计划任务后,会在 /var/spool/cron/ 中添加一个该用户自己的计划任务文档,目的是为了隔离。

    [root@localhost ~]# ll /var/spool/cron/
    total 8
    -rw------- 1 lee  lee  56 Nov  6 19:58 lee
    -rw------- 1 root root 52 Nov  6 20:00 root
    

    cron服务检测时间的最小单位是分钟,所以cron 会每分钟去读一次 /etc/crontab 和 /var/spool/cron/ 里的内容

    [root@localhost ~]# ll /etc/ | grep cron
    -rw-------   1 root root    541 Aug  9 07:07 anacrontab
    drwxr-xr-x.  2 root root     21 Oct 14 16:11 cron.d
    drwxr-xr-x.  2 root root     42 Mar  6  2019 cron.daily
    -rw-------   1 root root      0 Aug  9 07:07 cron.deny
    drwxr-xr-x.  2 root root     22 Oct 14 16:11 cron.hourly
    drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.monthly
    -rw-r--r--.  1 root root    451 Jun 10  2014 crontab
    drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.weekly
    
    
    上面的目录的作用:
    /etc/cron.daily,目录下的脚本会每天执行一次,在每天的6点25分时运行;
    /etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的17分钟时运行;
    /etc/cron.monthly,目录下的脚本会每月执行一次,在每月1号的6点52分时运行;
    /etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的6点47分时运行;
    

    系统默认执行时间可以根据需求进行修改

    举例1、备份日志

    每天3点备份 /home/logs/user.log 文件到 /data/logs/目录下,并删除前一天的日志,备份的日志文件名是年-月-日的格式
    
    执行:
    crontab -e
    0 3 * * * rm /data/logs/*
    0 3 * * * cp /home/logs/user.log /data/logs/$(date +\%Y-\%m-\%d)
    

    举例2、上传文件

    每天2点通过sftp的方式上传一个文件到其他服务器上
    

    编写执行脚本 upload.sh

    #!/bin/bash
    # SFTP配置信息
    # IP
    IP=10.20.0.101
    # 端口
    PORT=22
    # 用户名
    USER=lee
    # 密码
    PASSWORD=111111
    # 需要上传的文件名 (文件名为user-前一天日期.csv   (如user-2019-11-07.csv))
    FILE=user-$(date -d -1day +%Y-%m-%d).csv
    # 需要上传的文件所在目录
    CLIENTDIR=/home/
    # 上传到目标服务器的目录
    SEVERDIR=./share/
    
    lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
    cd ${SEVERDIR}/
    lcd ${CLIENTDIR}
    put ${FILE}
    by
    EOF
    

    创建计划任务

    crontab -e
    添加一下内容
    0 2 * * * sh /home/uploadFile.sh
    
  • 相关阅读:
    linux 和 ubuntu 修改主机名
    Linux删除用户
    ubuntu更新源
    python连接mysql
    用于迭代器的yield return
    Tuple类型
    Action 和 Func
    用iDSDT制作声显卡DSDT
    C#“同步调用”、“异步调用”、“异步回调”
    读懂IL代码就这么简单
  • 原文地址:https://www.cnblogs.com/jylee/p/13679469.html
Copyright © 2020-2023  润新知