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

内容简要命令:mail,

at, crontab

相信每个人都有使用闹钟的习惯,我们设定闹钟的种类有很多。比如说,只提醒一次、工作日提醒、休息日提醒等。在设定闹钟之后,每天的设定时间都会按时的提醒你去做什么事情,以免自己忘记一些重要的会议等事情。像这样在每天特定的时间安排做一些事情。这样一种事情我们就称之为例行任务计划。

其实在个系统平台上都有类似的例行性任务计划功能,那如何去像设定闹钟一样在Linux系统之上指定例行性任务计划。

我们先来看看任务计划的分类:主要有两种

一次性任务计划:未来的某时间点执行一次某任务:at, batch:只执行一次就结束

周期性任务计划:周期性运行某任务:crontab:每隔一定时间就去做相同的事情

执行结果:会通过邮件发送给用户

~]#  netstat

-tnlp

~]# ss -tnl

本地电子邮件服务:

smtp:simple

mail transmission protocol

pop3:Post

Office Procotol

imap4:Internet Mail Access Procotol

mail命令:

mailx - send

and receive Internet mail

MUA:Mail

User Agent, 用户收发邮件的工具程序;

r:回复

d: 删除

mailx

[-s 'SUBJECT']

username[@hostname]

邮件正文的生成:mail查看邮件

(1)

交互式输入;. 单独成行可以表示正文结束;

(2)

通过输入重定向;

~]# mail -s 'fstab file' root < /etc/fstab

(3) 通过管道;

~]# cat /etc/fstab | mail -s 'to you' jklte

at命令:

at是有atd服务提供的,在centos6

上可以使用service atd start来启动服务:在centos7 上要使用sysemctl start

atd.service

at

[OPTION]... TIME

常用选项:

-l:查看作业队列,相当于atq

-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;

-d:删除指定的作业,相当于atrm;

-c:查看指定作业的具体内容;

-q QUEUE:指明队列;

注意:作业执行结果是以邮件发送给提交作业的用户;

TIME:

HH:MM [YYYY-mm-dd] :如20:01

2016-11-9

noon,midnight, teatime

tomorrow

now+#

UNIT:minutes, hours, days, OR weeks

at的作业有队列,用单个字母表示,默认都使用a队列;

~]# at now

+3min

at> cat/issue

at> ls /var

at> echo "hello there"

Ctrl+d提交亦可;

问题:显示Can't open /var/run/atd.pid

to signal atd. No atd running?

答:service atd

start(开启atd)

例子:

实例1:三天后的下午 5 点锺执行

/bin/ls

# at 5pm + 3 days

at> /bin/ls

at>

job 7 at 2016-01-08 17:00

实例2:明天17点钟,输出时间到指定文件内

# at 17:20 tomorrow

at> date > /root/doiido.log

at>

Job 8 at 2016-01-06 17:20

batch命令:

batch会让系统自行选择在系统资源较空闲的时间去执行指定的任务;

周期性任务计划:cron,crontab

crontab是由crond服务提供的。

向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;要使用crontab命令;

服务程序:

cronie:主程序包,提供了crond守护进程及相关辅助工具;

确保crond守护进程(daemon)处于运行状态:

CentOS

7:启动服务

systemctl  status

crond.service

Active: active (running) ... ...

CentOS

6:启动服务

service  crond

status

... is running.

1、cron任务分为两类:

系统cron任务:主要用于实现系统自身的维护;

手动编辑:/etc/crontab文件

用户cron任务:

命令:crontab命令

(1)系统cron的配置格式:/etc/crontab

注意:

(1)

每一行定义一个周期性任务,共7个字段;

*

*  *  *

* : 定义周期性时间

user-name :

运行任务的用户身份

command to

be executed:任务

(2)

此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;

(3)

执行结果邮件发送给MAILTO指定的用户

(2)用户cron的配置格式:/var/spool/cron/USERNAME

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# 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

# |  |

|  |

|

# *  *

*  *  *

command to be executed

注意:

(1)

每行定义一个cron任务,共6个字段;

(2)

此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;

(3)

邮件发送给当前用户;

时间表示法:

(1) 特定值;

给定时间点有效取值范围内的值;

注意:day of

week和day of month一般不同时使用;

(2) *

给定时间点上有效取值范围内的所有值;表“每..”

(3) 离散取值:,

在时间点上使用逗号分隔的多个值;

#,#,#

(4) 连续取值:-

在时间点上使用-连接开头和结束

#-#

(5)

在指定时间点上,定义步长:

/#:#即步长;

注意:

(1)

指定的时间点不能被整除时,其意义将不复存在;

(2)

最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其它机制;

定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次;

示例:

(1) 3 * * *

*:每小时执行一次;每小时的第3分钟;

(2) 3 4 * *

5:每周执行一次;每周5的4点3分;

(3) 5 6 7 *

*:每月执行一次;每月的7号的6点5分;

(4) 7 8 9 10

*:每年执行一次;每年的10月9号8点7分;

(5) 9 8 * *

3,7:每周三和周日;

(6) 0 8,20 * *

3,7:每周三和周日;8点整和20点整

(7) 0 9-18 * *

1-5:每周一到周五:9点正到18点正

(8) */5 * * *

*:每5分钟执行一次某任务;

(9) */7

crontab命令:

crontab [-u user] [-l | -r | -e]

[-i]

-e:编辑任务;自动打开人物编辑器

* * * * * /bin/echo  "hello world"

-l:列出所有任务;

-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;

-i:在使用-r选项移除所有任务时提示用户确认;

-u

user:root用户可为指定用户管理cron任务;

注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:

(1) COMMAND

> /dev/null

(2) COMMAND

&> /dev/null

注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;

touch

file-$(date +%f-%H-%M-%S)

思考:某任务在指定的时间因关机未能执行,下次开机会不会自动执行?

不会!.

如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;

anacron:

生产环境中的linux主机,通常都是全天、全年无休止的工作,同样在其之上指定的任务计划也需要每天、每周、固定时间去执行,如果没有什么意外情况(比如断电),那么任务就会按照设定的时间去执行,但是如果在某一周内系统发生了断电情况,在恢复供电期间恰好有一些任务计划要执行,此时任务计划就失效了,当恢复供电后,系统需要等到下一个周期才能继续执行此任务,也就意味着断电期间的任务将失效。

但恰恰在这期间要执行的任务也非常重要,该怎么办?有没有手动去执行的方法吗? 有!那就是

anacron

那么anacron如何知道Linux

系统何时关机的呢?anacron会记录上次anacron执行的时间,anacron会去分析现在的时间与记录上次运行anacron的时间,两者比较后若发现有差异,那就是在某些时刻没有进行计划任务了,此时anacron就会开始运行未进行的crontab任务,所以anacron其实是通过crontab来运行的

anacron是一个程序,而非一个服务,anacron也有自己的配置文件/etc/anacrontaba。

练习:

1、每12小时备份一次/etc目录至/backups目录中,保存文件名称格式为“etc-yyyy-mm-dd-hh.tar.xz”

2、每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为“secure-yyyymmdd”;

~]# mkidr

logs

~]# crontab

-e

0 1 * *

2,4,7 /bin/cp /var/log/secure /logs/secure-$(date

+%Y-%m-%d-%H-%M)> /dev/null

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

~]# crontab

-e

0 */2 * * *

/bin/ grep "^[S,M]" /proc/meminfo

>>/tmp/meminfo.txt

linux任务计划不执行时间,Linux任务计划、周期性任务执行相关推荐

  1. linux下printf语句执行时间,linux下printf中\n刷新缓冲区的疑问(已解决)

    #include #include int main(void) {          printf("hello world"); close(STDOUT_FILENO);   ...

  2. linux提交任务执行时间,Linux之任务计划

    Linux之任务计划 在了解linux任务计划之前,先来了解linux的邮件服务,因为任务计划默认会调用mail邮件服务来发送邮件.以下对mail邮件服务,进行初步了解.主要对邮件发送方法,查看邮件等 ...

  3. Python模拟Linux的Crontab, 写个任务计划需求

    Python模拟Linux的Crontab, 写个任务计划需求 来具体点 需求:执行一个程序, 程序一直是运行状态, 这里假设是一个函数当程序运行30s的时候, 需要终止程序, 可以用python, ...

  4. Linux任务计划、周期性任务执行

    Linux任务计划.周期性任务执行 未来的某时间点执行一次任务:at, batch 周期性运行某任务: cron 电子邮件服务: smtp: simple mail transmission prot ...

  5. linux设置数据库定时备份,linux中使用计划任务进行数据库定期备份

    Linux上经常要使用cornd执行定时任务.如果对crontab掌握不是很熟悉,也可以直接使用宝塔面板进行一些简单的定时计划任务. 在我的云主 机上 安装了CentOS系统,并默认安装了宝塔管理面板 ...

  6. 【技术人快报】美军计划换用Linux系统+安卓系统“克隆漏洞”曝光

    2018年01月11日 星期四 [技术人快报181期] 导读:美军计划换用Linux系统+安卓系统"克隆漏洞"曝光 [每日一句] 努力做一个可爱的人.不埋怨谁,不嘲笑谁,也不羡慕谁 ...

  7. linux 计划任务格式,linux crontab 定时任务格式和使用方法2019-01-13

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  8. 使用PowerShell和Windows任务计划程序备份Linux SQL Server数据库

    This article is an in-depth guide on how PowerShell can be used to maintain and manage SQL backup on ...

  9. linux 周期性任务,Linux任务计划,周期性任务执行详解

    Linux任务计划,周期性任务执行 概述 本章将为大家介绍一些任务计划和周期性任务计划执行相关内容 任务计划的分类主要有由两种 未来的某时间点执行一次某任务:at,batch 周期性运行某任务:cro ...

最新文章

  1. Common Subsequence 1159 hdu
  2. c++ 异常注意说明
  3. 机器学习实战:支持向量机
  4. php中文网地址多少,计算机网络中有几种地址格式
  5. linux离线安装python3 devel_linux离线安装python3
  6. wxWidgets:wxScopedArray< T >类模板的用法
  7. No module named 'oscar.apps.promotions'
  8. 【mysql系列】细谈explain执行计划之“谜”
  9. freemarker java静态方法_java Freemarker页面静态化实例详解
  10. ffmpeg添加到环境变量_Windows 10系统下安装FFmpeg教程详解
  11. 网易游戏:游戏测试是一个怎样的行业?
  12. kerberos认证下kafka报错Bootstrap broker host:ip (id: -1 rack: null) disconnected
  13. 不均衡分类问题 之 class weight sample weight
  14. 浙江大学计算机学院复试拟录取名单,浙江大学计算机学院2015年考研复试拟录名单...
  15. 在安卓应用开发过程中减小安卓应用大小的 9 种方法
  16. WPS自定义样式功能太弱了
  17. dcos - marathon -lb 问题
  18. 【读书笔记】《贫穷的本质》- [印度] Abhijit Banerjee / [法] Esther Duflo
  19. 二叉树输入与存储的问题
  20. ERROR! The server quit without updating PID file (/usr/local/mysql/data/

热门文章

  1. python之读入数据
  2. 关于YOLOv3的文章
  3. opencv 利用轮廓检索函数实现字母匹配(图像匹配)
  4. 教授先生带你学习链表:双向链表3
  5. java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
  6. js中DOM, DOCUMENT, BOM, WINDOW 区别
  7. 具有多个生成器和多个判别器的GAN
  8. fpga与三八译码器(BASYS3 VIVADO18)
  9. 积分兑换平台(这是一种剥削么?强烈求拍砖)
  10. 史上最强技术电信诈骗蔓延!无法防范!只能等死!