• Linux 任务计划管理


    在某个时间点执行一次任务

    at工具

    作用:用于执行一次性任务,需要指定执行的时间。

    at工具来源于at软件包。
    
    依赖与atd服务,需要启动才能实现at任务。#通过这个守护进程见监控at的相关内容
    
    #选项:
    -l:查看当前定义好的计划任务
    
    -d num:根据作业编号来删除计划任务
    
    -c num: 查看具体作业N号任务
    
    -f file 指定的文件中读取任务
    
    at  时间 -->要执行的内容
    
    #编写完内容后的退出方法:
    ctrl+d 快捷键
     
    #重启以后计划任务也不会丢失,因为任务已经被保存到磁盘上了,执行完成后会自动删除对应的文件
    
    #位置:
    at队列存放在/var/spool/at目录中,
    ubuntu存放在/var/spool/cron/atjobs目录下
    
    #计划任务中所有的标准输入和输出头不会在屏幕上输出,而是以邮件的方式(root的邮件身份)进行发送。
    
    
    折叠

    at工具的时间格式

    • 数字格式

    • 单词格式

    #数字格式:
    HH:MM [YYYY-mm-dd]  #时间后面跟上年月日(具体时间冒号,年月日短横线)
    #例如:02:00 2016-09-20  或者 02:00
    
    #单词格式:
    now+#{minutes,hours,days, OR weeks}
    #例如now + 1 minutes:表示一分钟后
    

    at任务的执行方式

    • 交互式

    • 管道符

    • -f选项

    #交互式:
    at是个交互式命令,通过键盘读取输入
    
    #管道符:
    通过管道符的方式来进行at命令的标准输入。
    
    #-f选项:
    通过 -f 指定文件,然后从文件中读取内容给aat命令
    

    at工具的黑白名单

    /etc/at.{allow,deny} 控制用户是否能执行at任务

    白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
    
    黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用
    者则可执行
    
    如果两个文件都不存在,只有 root 可以执行 at 命令
    

    周期性运行某任务

    cron工具

    cron 依赖于crond服务,确保crond守护处于运行状态
    
    #实现周期性计划的一个服务
    定期检查是否发现满足计划任务的条件,自动触发计划任务的执行
    

    计划任务的创建

    #格式:
    crontab 选项
    
    #常用选项:
    -l:列出存在的计划任务
    
    -e:创建用户自己的计划任务 #相当于自动用vim打开一个空白文件
    
    -r:移除所有计划任务
    
    -u username: 在使用-e创建计划任务的时候以指定的用户身份运行
    

    创建计划任务的文件格式:

    格式:

    配置文件格式: 分 时 天 月 周 需要执行的内容

    #查看格式的方法:cat /etc/crontab
    
    #一些特殊格式:
    *:表示不确定时间,相当于每
    
    /num:num表示步长,在指定时间范围上,定义步长
    #例如:每十分钟执行一次任务: */10
    
    离散取值: x,x,x,
    #例如:1,10,20 ,每个月的1号十号、二十号
    
    连续取值:x-y
    #例如:1-5:每个月的1-5号
    

    注意

    #计划任务也是存在配置文件中的,存放位置:/var/spool/cron里面
    
    #每个月的日期和星期几字段的关系:或的关系
    
    #计划任务的百分号(%)表示的是换行的意思。所以使用百分号需要使用换行符号或者把这个命令卸载脚本里面,通过脚本的调用来实现。
    

    计划任务的path信号

    #计划任务的path变量(只有两个)和系统的path变量不是一样的。at命令的path变量和我们系统的path变量是一样的。
    
    #解决这个问题的方法:
    #方法一:
    命令使用计划任务的时候需要写绝对路径。脚本的话就在脚本的前面加上path变量的值,以防没有。
    
    #方法二:
    在创建计划任务的时候,在最上面生成path变量。 PATH=xxxx  (vim命令行:r! 要执行的命令)
    
  • 相关阅读:
    C# 辗转相除法求最大公约数
    入职一周感慨
    C++ 类和对象(4)构造函数
    c++ 批量导出c# 函数,格式
    重庆建筑模板厂家有哪些?
    C++智能指针
    aarch64 arm64 部署 stable diffusion webui 笔记 【3】
    (附源码)spring boot大学毕业设计管理系统 毕业设计 030945
    前端js实现protobuf序列化与反序列化
    在【windows server 2012】下安装MySQL5.7
  • 原文地址:https://www.cnblogs.com/heyongshen/p/16483208.html