zoukankan      html  css  js  c++  java
  • linux自动执行指令crontab和at

    目录

    1 at和crontab指令

    2 batch

    一、at与crontab的区别

    运行方式不同

    at只运行一次,crontab循环运行

    依赖的服务不同

    at 对应的服务是 atd       

    crontab 对应的服务是 crond  

    二、at指令

    执行at需要注意:

    1 检查用户是否有at的权限  

    如果系统里存在/etc/at.allow文件,则里面存在的用户名才会有at权限

    如果系统里存在/etc/at.deny文件,则里面存在的用户名才会没有at权限(一般开源的系统都是默认给deny文件,且里面为空)

    如果系统不存在以上文件,则只有root用户可以用at权限      

    2 检查atd服务是否已经开启

    service atd status

    列举常用的一些指令

    1 新建一个日程

    at 后面+时间单位即可,我一般用now + n minutes ,也可以用标准的时间格式 HH:MM YYYY-MM-DD

    at now+时间的方式

    注意 <EOT> 是结束的意思,按CTRL+D就结束,----小贴士  CTRL+C是退出

    上面的指令意思是1分钟后会在/目录后面加一个testAt文件

    结果图

    at 时间格式

    这里的atq后面会讲到-列出当前正在排队的at日程

    2 查看日程

    atq 和 at-l 一样都可以查询日程列表

    at - c +日程ID可以查询日程详细信息

    其实这个信息也在/var/spool/at 目录下可以VI到

    如果怀疑中了木马可以去里面查询一下哦,不过木马一般都是循环的,不用at的吧。

    3 删除日程

    at -d 和atrm 一样都可以删除日程(但是需要配合atq拿到日程ID)

    4 另外推荐一个batch指令

    batch和at的语法一样,区别在于batch是延后执行,这个指令在CPU负载小于0.8的时候才会运行。

    简单来说会等系统不再繁忙的时候才会执行,比较人性化。

    三 crontab指令

    执行crontab需要注意:(其实和at是一样的)

    1 检查用户是否有crontab的权限  

    如果系统里存在/etc/cron.allow文件,则里面存在的用户名才会有cron权限

    如果系统里存在/etc/cron.deny文件,则里面存在的用户名才会没有cron权限(一般开源的系统都是默认给deny文件,且里面为空)

    如果系统不存在以上文件,则只有root用户可以用cron权限      

    2 检查atd服务是否已经开启

    service crond status

    1 新建一个日程

    crontab -e 可以新建一个日程(相当于打开了一个编辑文本)写完任务后:wq保存退出

    编辑的语法 

    6个栏位

    4个特殊字符

    可以分配多个任务,格式如下

    例子1 每分钟在testCron里打印一下日期

    1 crontab -e 进入编辑文本

    2 输入 0-59 * * * * date>>/testCron
    输出结果 :每分钟打印了一次date

    例子2 每年元旦那天在testCron里打印一下日期

     0 0 1 1 * date>>/testCron

    例子3 每3分钟在testCron里打印一下日期

    0-59/3 * * * * date>>/testCron

    例子4 每小时里的第1-10,和第13分钟在testCron里打印一下日期

    0-10,13 * * * * date>>/testCron

    以上生成的任务都会写入 /etc/crontab 与 /var/spool/cron里命名为root

    2 查看存在的任务

    crontab-l

    3 修改与删除任务

    修改任务的话,crontab -e 即可

    删除任务的话,使用 crontab-r

    总结

    1 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron 里面的数据内容,如果要修改直接VI去编辑即可:  

     

    上图的MAILTO可以填写自己的邮箱12312312@qq.com

    2 修改完 /etc/crontab 之后,可能并不会马上运行, 这个时候请重新启动 crond 这个服务吧!『/etc/init.d/crond restart』

  • 相关阅读:
    catalina_home与catalina_base
    log4j配置
    lsof
    定时任务-crontab
    access日志配置
    java常识
    mysql事务隔离级别与实现原理
    文件描述符设置
    gpio 預設值
    synchronous interrupt and asynchronous interrupt
  • 原文地址:https://www.cnblogs.com/sunfan1988/p/3509625.html
Copyright © 2011-2022 走看看