ubuntu下周期执行任务crontab

1、cron和crontab命令详解

crontab 每分钟、每小时、每天、每周、每月、每年定时执行 crontab每5分钟执行一次

cron机制
cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制

crontab参数
-u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab
crontab -u 使用者名称

    -l:可以列出crontab的内容

    -r:可以移除crontab

    -e:可以使用系统预设的编辑器,开启crontab

    -i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

crontab时间格式说明
minute(分)可以设置0-59分

    hour(小时)可以设置0-23小时

    day of month(日期)可以设置1-31号

    month(月份):可以设置1-12月

    day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,或者我们也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一等等

crontab时间格式范例
1-3表示123
1-9/2表示13579

crontab范例
每五分钟执行 */5 * * * *

每小时执行     0 * * * *

每天执行        0 0 * * *

每周执行       0 0 * * 0

每月执行        0 0 1 * *

每年执行       0 0 1 1 *

设定cron的权限
/etc/cron.allow
/etc/cron.deny

    系统首先判断是否有cron.allow这个文件,如果有这个文件的话,系统会判断这个使用者有没有在cron.allow的名单里面,如果在名单里面的话,就可以使用cron机制。如果这个使用者没有在cron.allow名单里面的话,就不能使用cron机制。

     如果系统里面没有cron.allow这个文件的话,系统会再判断是否有cron.deny这个文件,如果有cron.deny这个文件的话,就会判断这个使用者有没有在cron.deny这个名单里面,如果这个使用者在cron.deny名单里面的话,将不能使用cron机制。如果这个使用者没有在cron.deny这个名单里面的话就可以使用cron机制。

    如果系统里这两个文件都没有的话,就可以使用cron机制

介绍crontab文件
/etc/crontab
在这个文件里并没有记录系统要执行哪些工作,而是记录了下面四个子目录。
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

    这些子目录里存放了一些脚本,到了crontab所指定的时间点,系统就会去执行这些子目录里的脚本。

2、ubuntu 16.04 计划任务crontab 周期执行任务

crontab主要作用:

比如我们每天需要清空日志记录文件,我们可以执行一段指令去完成,每天都需要手动输入就比较麻烦,让系统每天去帮我们完成就比较轻松了,根据你自己的定义 可以定位到月 日 时 分 星期 ,以前有个很有名的病毒 '黑色星期五'   每到了周五就发作,计划任务和它一样的道理,只不过没有破坏性,

1、 计划任务,crontab命令选项:
-u指定一个用户,
-l列出某个用户的任务计划,
-r删除某个用户的任务,

 -e编辑某个用户的任务

2 cron文件语法:

分 小时 日 月 星期 命令

     0-59   0-23   1-31   1-12     0-6     command    

可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

    "*"代表取值范围内的数字,

    "/"代表"每",

    "-"代表从某个数字到某个数字,

    ","分开几个离散的数字

3、查看计划任务

查看调度任务
crontab -l //列出当前的所有调度任务

     crontab -l -u jp   //列出用户jp的所有调度任务

实例1:

(1)在当前家目录下创建shell脚本123.sh(实现排序)如下

     #!/bin/bash
    arr=(1 5 4 5 6 7 0)
    for (( i=0 ; i<${#arr[@]} ; i++ ))
    do
          for (( j=${#arr[@]} - 1 ; j>i ; j-- ))
          do
        #echo $j
        if  [[ ${arr[j]} -lt ${arr[j-1]} ]]
        then
           t=${arr[j]}
           arr[j]=${arr[j-1]}
           arr[j-1]=$t
        fi
      done
    done
echo "排序后:"
echo ${arr[@]}                   

(2)输入crontab -e 添加计划任务(不指定用户就是当前用户)

    第一次会让你选择编译器,如果选错编译器了要更改编译器  输入   select-editor 重新选择 

    ubuntu截图用shift+PrintScreen 选择 ’复制到剪切板‘ 就可以了

    

我选的是vim ,看个人习惯


(3)在文本最后输入我们要执行的shell脚本命令

        * * * * * 代表每分钟执行一次 

            

    按esc  输入:wq   保存退出

 (4)   重启cron服务:

service cron restart

 (5)查看结果

       用户家目录下查看任务有没有执行,如果执行了应该是有pa.txt文件的(任务有重定向到文件)

     

    查看文件内容

如果你要周期执行python脚本,你只需要把脚本写好,然后将cron那里的执行命令写成 python3 脚本目录文件名就可以

比如 :

* * * * *  python3 ~/hello.py >  123.txt

总结:

linux中将一个脚本文件作为一个计划任务小结,以python脚本为例:

1 创建脚本文件test.py,在文件开头需要加上下面一行

#!/usr/bin/python

上面这行的作用是说明使用那个解释器来执行该文件,如果不知道python解释器在哪,可以使用命令which python来查看

2 给该文件添加可执行的权限

chmod +x test.py

3 添加计划任务

crontab -e

在文件中追加一行,*/2 * * * * /usr/bin/python /home/pc/work/ENV/project/test.py

保存退出,:wq

4 重启cron服务

service cron restart

结束

原文链接:https://blog.csdn.net/jiangjiang_jian/article/details/80779230

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值