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

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: 删除

a4c26d1e5885305701be709a3d33442f.png

mailx

[-s 'SUBJECT']

username[@hostname]

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

(1)

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

(2)

通过输入重定向;

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

(3) 通过管道;

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

a4c26d1e5885305701be709a3d33442f.png

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:指明队列;

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

a4c26d1e5885305701be709a3d33442f.png

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提交亦可;

a4c26d1e5885305701be709a3d33442f.png

问题:显示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

a4c26d1e5885305701be709a3d33442f.png

注意:

(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值