Linux任务计划主要分为分为两种分别是一次性任务计划和周期性任务计划实现工具主要是at和crontab下面将详细介绍任务计划工具的使用。

1、at命令一次性任务计划

at命令是由atd服务提供的其主程序包是atd在CentOS6上可以使用service atd start命令来启动在CentOS7上需要使用systemctl start atd.service来启动服务。

at命令常用方法

at TIME:最简单的使用方法是at跟上时间以交互式的方法创建任务计划最后以Ctrl+d结束。

at -f FILE TIME:从指定文件中读取作业任务而不用再交互式输入

at -l:相当与atq列出系统上的所有当前用户的at队列

at -d job:相当于atrm可以删除一个指定的作业

at -c job:查看具体作业任务

at创建的任务都放在/var/spool/at目录下并且at作业任务的执行结果中如果有标准输出和错误输出则都是以邮件的形式通知给相关用户。

TIME的时间格式有:

HH:MM:当天时间的几点几分执行任务如果该时间已过则明天此时执行任务还可以使用下面定义好的时间格式

noon:中午12点

midnight:凌晨即零点

teatime:下午茶时间具体为下午4点

HH:MM yyyy-mm-dd:某年某月某日的几点几分执行任务

HH:MM[am|pm] [Month] [Date]:同上也是指定具体某天的某时刻执行如04pm March 17

HH:MM tomorrow:明天的几点几分执行

now + # (minutes,hours,days,weeks):从现在时间起再加#分钟或#小时或#天或#周后执行

默认情况下所有用户都可以使用at命令创建一次性计划任务如果管理员需要控制具体那些用户可以使用at创建计划任务则可以通过黑名单拒绝或白名单允许的方式控制并且默认情况下系统自带有黑名单文件/etc/at.deny在其中填写不允许使用at命令的用户名单即可同理也可以手动创建白名单/etc/at.allow在其中填写允许用户的名单即可若黑名单和白名单同时存在则黑名单不生效只有白名单中的用户可以使用at命令创建任务。

2、batch命令一次性任务计划

batch创建的也是一次性任务计划和at的用法几乎一致但batch不需要指定时间batch会让系统自行选择空闲的时间去执行指定的任务。

3、crontab命令周期性任务计划

crontab命令需要crond守护进程提供服务其主程序包是cronie。通过crontab命令向crond提交计划任务与at不同它需要使用专用的配置文件且此文件具有固定格式。

cron任务分为两类一类是系统cron任务主要用于实现系统自身的维护而创建的周期性任务一般情况下系统任务是不需要手动添加的在安装系统时会自动创建如果需要新增系统任务的话可以手动编辑/etc/crontab文件。一类是用户cron任务根据用户需求自定义的周期性任务其创建方式可以使用crontab命令创建crontab命令创建任务时会自动检测语法错误且创建的任务配置文件会以用户名的方式自动保存在/var/spool/cron/目录下。

系统cron任务的格式为

# .---------------- 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

共7个字段前5个字段表示时间第6个字段表示以某用户身份运行第7个字段表示具体命令任务每一行表示一个周期性任务。

用户cron任务的格式与系统cron任务格式基本一致但用户cron任务不需要再指定以哪个用户身份运行了直接跟具体命令任务即可所以用户cron任务一共有6个字段。

cron任务的时间表示法

1)、特定值给定时间点有效值范围内的值

2)、星号*表示特定时间点上有效值范围内的所有值表示“每...”

如:每年10月1号的中午12点表示为:0 12 1 10 *

每天的晚上18点表示为:0 18 * * *

每周一的早上点表示为:0 8 * * 1

3)、离散取值

如:每天的早上点和晚上18点表示为:0 8,18 * * *

每月的1号和15号表示为:0 0 1,15 * *

每周的周一和周五表示为:0 0 * * 1,5

4)、连续取值

如:每天的8点到18点表示为:0 8-18 * * *

每月的1号到15号表示为:0 0 1-15 * *

每周的周一到周五表示为:0 0 * * 1-5

5)、在指定时间范围上定义步长

如:每3分钟表示为:*/3 * * * *

每隔3天表示为:0 0 *3 * *

6)、系统定义好的时间

@reboot :每次重启后执行一次

@yearly和annually : 都表示为每年的1月1号:0 0 1 1 *

@monthly : 每月的1号 :0 0 1 * *

@weekly : 每周的周日 :0 0 * * 0

@daily :每天的凌晨:0 0 * * *

@hourly :每小时的整点:0 * * * *

crontab命令的常见用法有:

创建用户周期性任务命令为:crontab -e

列出所有用户周期性任务命令为:crontab -l

删除所有用户周期性任务命令为:crontab -r

root用户为指定用户创建或管理cron任务:crontab -u USER

cron任务也可以通过黑名单和白名单的方式控制用户使用crontab命令创建任务的权限默认情况下系统自带有黑名单/etc/cron.deny也可以手动创建白名单/etc/cron.allow当白名单和黑名单都存在时黑名单失效只有白名单中的用户可以使用crontab命令创建任务。

需要注意:

1)建议定义cron任务时所用到命令使用绝对路径或自定义一个拥有完整路径的环境变量。

2)cron任务的运行结果的标准输出和错误都是以邮件的形式通知给相关用户如果不想以邮件的形式通知用户则可以使用重定向的方式输出给/dev/nullCOMMAND &> /dev/null。

3)对于cron任务来讲%有特殊用途如果在命令中要使用%则需要转义不过如果将%放置与单引号中也可以不用转义。

练习:

1、每周2, 4, 7备份/var/log/messages文件至/logs目录中文件名形如“messages-yyyymmdd”

#先创建/logs目录

]# mkdir /logs

#使用crontab -e创建任务

]# crontab -e

0 0 * * 2,4,7 /bin/cp /var/log/messages /logs/messages-$(date +\%Y\%m\%d) &> /dev/null

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

]# crontab -e

0 */2 * * * /bin/grep "^[SM]" /proc/meminfo >> /tem/meminfo.txt

linux的周期行计划任务叫做atd,Linux任务计划相关推荐

  1. linux的周期计划任务叫atd,linux计划任务

    一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...

  2. linux自定义命令行参数,如何自定义一个Linux命令(简单易懂版)

    好久没写东西了,如果不往外输出,就不知道自己到底经历过什么,学到过什么,简书的第一篇文章从这篇前年写在csdn的文章开启.以下是正文,希望大家能够互相支持,共勉! Linux系统提供了大量的命令供用户 ...

  3. linux 从命令行启动,如何开机进入Linux命令行

    原标题:如何开机进入Linux命令行 可能有时候你启动 Linux 时需要或者希望不使用 GUI(图形用户界面),也就是没有 X,而是选择命令行.不管是什么原因,幸运的是,直接启动进入 Linux 命 ...

  4. linux的周期行计划任务叫做atd,linux基本命令之计划任务

    RHEL5系统中默认安装了at.vixie-cron软件包!可以通过atd和crond这两个系统服务实现一次性和周期性任务计划功能!对应的命令是at和crontab! 这里我们只说一下at一次性任务计 ...

  5. Linux是命令行吗,你真的了解Linux命令吗?

    原标题:你真的了解Linux命令吗? 你觉得在网络管理和服务器管理方面对Linux命令的使用已经是专家级别了?去试试这些Linux命令测验来看看你对10个Linux工具的了解程度以及他们的使用案例吧. ...

  6. linux zsh命令行vim命令补齐,Linux使用zsh提高效率的5条建议

    平时比较喜欢命令行,不喜欢从图形化界面一个个的点过去:感觉还是命令搜索,查找方便些,快速些.但是,Bash本身提供的功能又不够方便,自己也懒得折腾.幸得github上有前辈大神们开源的 zsh工具集, ...

  7. linux纯命令行怎么下载,如何从Linux命令行轻松分享文件

    原标题:如何从Linux命令行轻松分享文件 Transfer.sh是一种简单,方便,快捷的命令行文件分享服务. 它允许您上传最多10GB的数据,文件存储14天,免费. 您可以最大限度地下载,并且还支持 ...

  8. linux 在指定行后写入文件内容,linux命令行下将指定的几行内容写入到一个文件中...

    覆盖型写法 (文件里原来的内容被覆盖) echo "aaa" > a.txt echo aaa > a.txt 添加型写法 (新内容添加在原来内容的后面) echo & ...

  9. linux替换指定行指定列的内容,linux – sed替换特定行号的特定列号值

    这是一种方式: $sed '/^username4/{s/ [^ ]*/ anything/3}' file username1 20130310 enabled 20130310 enabled u ...

最新文章

  1. iOS 系统分析(一) 阅读内核准备知识
  2. 商品评论html,商品评论列表.html
  3. 唐诗三百首加密软件如何使用_视频加密一机一码软件该如何选择?有哪些因素影响?...
  4. 私有云存储搭建(owncloud)
  5. Neo4j:使用LOAD CSV检测CSV标头中的恶意空间
  6. C++03:论容器的使用
  7. mysql的其中连接方式_MySQL选择连接中的位置,但不在其中
  8. HR图像添加运动焦散模糊【Matlab】
  9. Java 反射Reflection总结一
  10. plsqldev连oracle,plsqldev怎么联接oracle客户端
  11. apkg格式怎么打开_jpg怎么转换成pdf?再不学就晚了
  12. Excel 批量删除自定义名称
  13. 道路中心线提取、河道中心线的提取(ArcScan)
  14. 图片记录:2008年12月4日夜晚,暴风雪突袭烟台-上
  15. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
  16. 简单实现一下百度地图
  17. C++单个类的所有对象是否共享虚函数表的验证
  18. python selenium自动化,Firefox自动下载文件以及浏览器相关配置
  19. 火山引擎联合中国信通院发布《边缘云总体技术与测试要求》
  20. 转:所谓美好,就是摆脱了功利之心

热门文章

  1. 用产品思维设计API(三)——版本控制,没有你想的这么简单
  2. 服务器报系统,服务器监控报警系统
  3. 怎样对10亿个数字快速去重?——浅析位图数据结构及其应用
  4. 流氓软件卸载后又自动安装怎么办
  5. java主类结构、基本数据类型、 变量与常量、运算符、数据类型转换、代码注释与编码规范
  6. 20201124 fpga程序的下载
  7. python 下载 JPG 图片
  8. IDDPM原理和代码剖析
  9. 2.【OS】vscode下载很慢的问题
  10. 推荐一个关于视觉和图像处理的博客聚合-PIXEL SHAKERS