Linux任务计划,周期性任务执行

news/2024/6/15 10:30:12 标签: at, crontab
atom-one-dark"> ath stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">ath>

概述:什么是计划任务呢?就像我们每个人日常生活中都会使用到的闹钟一样,按时的去提醒该干什么事,以免忘记。同样,我们在工作中也要每天在特定的时间内安排一些事情,这就是计划任务。

未来的某时间点执行以此任务:at,batch
周期性运行某任务:cron
####at命令
用法:at [option] TIME

TIME:
  HH:MM [YYYY-mm-dd]
  noon, midnight, teatime
  tomorrow
  now+#{minutes,hours,days,OR weeks}

示例:
(1)HH:MM 如 02:00
在今天的02:00进行,若该时刻已过,则明天此时执行任务
(2)HH:MM YYYY——MM——DD 如:04:00 2016-09-20
规定在某年某月的某一天的特殊时可进行该项任务
(3)HH:MM[am|pm] [Month] [DATE]
04pm March 17   17:20 tomorrow
(4)HH:MM[am|pm]+number[minutes|hours|days|weeks]
在某个时间点再加及各时间后才执行该项任务
now+5minutes  03pm+3days

常用选项:
  -q QUEUE:指明队列;
  -l:列出指定队列中等待运行的作业;相当于atq
  -d:删除指定的作业;相当于atrm
  -c:查看具体作业任务
  -f /path/from/somefile:从指定的文件中读取任务;
  -m :强制at发送邮件,表示执行完毕;
注意:作业的执行结果中的标准输出和错误输出以邮件形式通知给相关用户;

atermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDYyNDcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt="这里写图片描述" />
####batch命令
让系统自行选择空闲时间去执行此处指定的任务;
####周期性任务计划:cron
向crond提交作业的方式不同于at,它需要使用专门的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令,可以检查语法是否有错误。
#####相关的程序包

cronie:主程序包,提供了crond守护进程及相关辅助工具;
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况;如cronie
中任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务;
crontabs:包含Centos提供系统维护任务;

确保crond守护处于运行状态:
  CentOS 7: systemctl status crond
  CentOS 6: service crond status

#####计划要周期性执行的任务提交给crond,由其来实现到点运行。

可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
系统cron任务:系统维护作业  手动编辑/etc/crontab
用户cron任务:crontab命令

系统cron任务

[root@server1 yum.repos.d]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin   #注意命令路径
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- 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

* * * * *:定义周期性时间;
user-name:运行任务的用户身份;
command to be executed:要执行的任务

此处的环境变量不同于用户登录后获得的环境变量,因此,建议命令使用绝对路径。

例如:晚上9点10分运行echo命令:
10 21 * * * gentoo /bin/echo “Hello“

时间表示法:
(1)特定值:给丁时间点有效取之范围内的值;
(2) * :给定时间上有效取值范围内的所有值;表示“每。。。“
(3)离散取值:,   #,#,#
(4)连续取值:-    #-#
(5)指定时间范围上,定义步长: /#:#即步长

例如:每3小时echo命令
0 */3 * * * gentoo /bin/echo “hello“

用户cron
crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

crontab [-u user] [-l | -r | -e] [-i]
  -l: 列出所有任务;
  -e: 编辑任务;
  -r: 移除所有任务;
  -i: 同-r一起用,以交互式模式让用户有选择的移除指定任务;
  -u user:仅root可运行,代为为指定用户管理cron任务;

注意:运行结果以又见通知给相关用户:
  (1) COMMAND > /dev/null
  (2) COMMAND &> /dev/null
  对于cron任务来讲,%有特殊用途;如果要在命令中使用%,则需要转义;
  不过,如果把%放置于单引号中,也可以不用转义。
思考:(1)如何实现秒级别运行任务?
      * * * * * for min in 0 1 2; do echo "hi"; sleep 20; done
     (2)如何实现每7分钟运行一次任务?

sleep命令: sleep NUMBER[SUFFIX]...
    SUFFIX:s:秒,默认 m:分钟 h:小时 d:天

练习:
1 每小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz“;
0 * * * * /bin/tar -czf /backup/etc-date +%F-%H.tar.gz /etc &> /dev/null

2 每周2,4,7备份/var/log/messagees文件至/logs目录中,文件名型如“messages-yyyymmdd“;
0 0 * * 2,4,7 /bin/cp -a /var/log/messages /logs/messages-date +%Y%m%d &>/dev/null

3 每两个小时取出当前系统/proc/meminfo文件中以S或者M开头的信息追加至/tmp/meminfo.txt文件中;
0 */2 * * * /bin/grep ‘1’ /proc/meminfo >> /tmp/meminfo.txt

4 工作日时间内,每小时执行一次“ip addr ahow“命令;
0 * * * 1-5 /sbin/ip addr show


  1. SM ↩︎


http://www.niftyadmin.cn/n/874040.html

相关文章

Centos开机过程

CentOS的启动流程总体顺序如下(以CentOS6为例): POST –> Boot Sequence –> bootloader(MBR) –> kernel –> 加载rootfs –> switchroot –> /sbin/init –> (配置文件:/etc/inittab,/etc/ini…

shell编程基本知识点

1 shell关键字 常用到的: 1 echo:打印文字到屏幕 2 ecex:执行另一个shell脚本 3 read:读标准输入 4 expr:对整数型变量进行算术运算 5 test:用于测试变量是否相等,是否为空,文件类型…

linux报告生成器之awk

awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 模式 /正则表达式/:使用通配符的扩展集。关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试模式匹配表达式&…

iptable规则的设定与查看

Firewall:防火墙,隔离工具;工作于主机或网络的边缘,对于进出本地或网络的报文根据实现定义好的检查规则做匹配检查,对于能够被规则所匹配到的报文作出相应处理的组件; iptables/netfilter 功能 filter&a…

sed命令之将换行符转换为空格的方法

换行符“\n” 第一次用了下面的命令,发现并没有任何用 [rootfoundation56 Desktop]# sed -i s/\n/ /g test [rootfoundation56 Desktop]# cat test 1 2 3 4 5 6 后来查看了许多博客才知道:sed是按行处理文本数据的,每次处理一行数据后&a…

zabbix server is running解决方法

配置完成后,登录浏览器查看,出现以下错误提示: zabbix server is not running,the information displayed may not be current。 解决方法如下: 1 查看日志报错:/var/log/zabbix/zabbix-server 2 查看系…

nginx配置文件小总结

配置文件主要由6个部分组成: main:用于进行nginx全局信息的配置 events:用于nginx工作模式的配置 http:用于进行http协议信息的一些配置 server:用于进行服务器访问信息的配置 location:用于进行访问路由的…

nginx中location在配置中的优先级

本文转自https://blog.csdn.net/LJFPHP/article/details/71642977,本来想自己总结的,但还是觉得人家写的更好一些,所以转载下来。 location表达式类型 ~ 表示执行一个正则匹配,区分大小写;~* 表示执行一个正则匹配&a…