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: 删除
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任务计划、周期性任务执行相关推荐
- linux下printf语句执行时间,linux下printf中\n刷新缓冲区的疑问(已解决)
#include #include int main(void) { printf("hello world"); close(STDOUT_FILENO); ...
- linux提交任务执行时间,Linux之任务计划
Linux之任务计划 在了解linux任务计划之前,先来了解linux的邮件服务,因为任务计划默认会调用mail邮件服务来发送邮件.以下对mail邮件服务,进行初步了解.主要对邮件发送方法,查看邮件等 ...
- Python模拟Linux的Crontab, 写个任务计划需求
Python模拟Linux的Crontab, 写个任务计划需求 来具体点 需求:执行一个程序, 程序一直是运行状态, 这里假设是一个函数当程序运行30s的时候, 需要终止程序, 可以用python, ...
- Linux任务计划、周期性任务执行
Linux任务计划.周期性任务执行 未来的某时间点执行一次任务:at, batch 周期性运行某任务: cron 电子邮件服务: smtp: simple mail transmission prot ...
- linux设置数据库定时备份,linux中使用计划任务进行数据库定期备份
Linux上经常要使用cornd执行定时任务.如果对crontab掌握不是很熟悉,也可以直接使用宝塔面板进行一些简单的定时计划任务. 在我的云主 机上 安装了CentOS系统,并默认安装了宝塔管理面板 ...
- 【技术人快报】美军计划换用Linux系统+安卓系统“克隆漏洞”曝光
2018年01月11日 星期四 [技术人快报181期] 导读:美军计划换用Linux系统+安卓系统"克隆漏洞"曝光 [每日一句] 努力做一个可爱的人.不埋怨谁,不嘲笑谁,也不羡慕谁 ...
- linux 计划任务格式,linux crontab 定时任务格式和使用方法2019-01-13
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- 使用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 ...
- linux 周期性任务,Linux任务计划,周期性任务执行详解
Linux任务计划,周期性任务执行 概述 本章将为大家介绍一些任务计划和周期性任务计划执行相关内容 任务计划的分类主要有由两种 未来的某时间点执行一次某任务:at,batch 周期性运行某任务:cro ...
最新文章
- Common Subsequence 1159 hdu
- c++ 异常注意说明
- 机器学习实战:支持向量机
- php中文网地址多少,计算机网络中有几种地址格式
- linux离线安装python3 devel_linux离线安装python3
- wxWidgets:wxScopedArray< T >类模板的用法
- No module named 'oscar.apps.promotions'
- 【mysql系列】细谈explain执行计划之“谜”
- freemarker java静态方法_java Freemarker页面静态化实例详解
- ffmpeg添加到环境变量_Windows 10系统下安装FFmpeg教程详解
- 网易游戏:游戏测试是一个怎样的行业?
- kerberos认证下kafka报错Bootstrap broker host:ip (id: -1 rack: null) disconnected
- 不均衡分类问题 之 class weight sample weight
- 浙江大学计算机学院复试拟录取名单,浙江大学计算机学院2015年考研复试拟录名单...
- 在安卓应用开发过程中减小安卓应用大小的 9 种方法
- WPS自定义样式功能太弱了
- dcos - marathon -lb 问题
- 【读书笔记】《贫穷的本质》- [印度] Abhijit Banerjee / [法] Esther Duflo
- 二叉树输入与存储的问题
- ERROR! The server quit without updating PID file (/usr/local/mysql/data/