linux工作调度(计划任务)
linux工作调度有两种:at,cron
· at:at是一个可以处理仅执行一次就结束调度的命令。说白了就是在某个时间需要干某一件事,例如在2018年10月12日下午一点要执行一个数据库矫正脚本。
· crontab:crontab是周期性的调度设定的命令。说白了就是周期性的例如每天下午1点都要去执行一个数据库矫正脚本。
一、at的使用
1、at启动
1.1可以使用/etc/init.d/atd restart 启动at服务
1.2可以使用chkconfig atd on设置服务开机自启
2、at的运行方式
使用at生成所要运行的调度任务是会在/var/spool/at/目录下生成一个如下图所示(此次生成名为a0000401877c58)的文件。待任务执行后该文件会自动删除。

3、哪些用户可以使用at?
我们可以使用两个文件/etc/at.allow和/etc/at.deny来控制at的使用限制。
3.1 /etc/at.allow,被该文件记录的用户可以使用at
3.2 /etc/at.deny,被该文件记录的用户不能使用at
3.3一般系统中只有at.deny文件,并且该文件为空。即所有用户都可以使用at命令。
3.3.1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
3.3.2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3.3.3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
3.3.4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab。如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
4、at的语法格式。
· at [-dvlm] TIME
· at -c 任务编号
4.1、at -m:当at调度任务完成后,即使没有输出信息,也要给用户发送email。
4.2、at -l:相当于atq,列出当前系统上的所有用户的at调度任务。
4.3、at -d:相当于atrm,可以取消一个在at调度列表中的任务。
4.4、at -v:使用较明显的时间格式列出at调度任务列表。
4.5、at -c:可以列出指定任务的实际命令内容。
4.6、TIME的格式:
4.6.1、HH:MM:例如,4:30在今天的4点30分执行,若已经超过该时刻则在下一天的指定时间执行。。
4.6.2、HH:MM YYYY-MM-DD:例如,4:30 2018-9-31
4.6.3、HH:MM + number [minutes/hours/days/weeks]:例如 now + 5 minutes,在现在往后五分钟后执行。
注意,at命令执行与终端无关,默认将所有的standed output/standard error output 输出至执行者的mailbox中。所以如果任务中有例如"echo "hello""命令时在终端是看不到的,此时要想看到可以吧输出重定向,例如你在tty1登录,可以使用“echo "hello" >/dev/tty1” 。
二、crontab的使用
1、启动
1.1:可以使用/etc/init.d/crond start 启动服务
1.2:可以使用systemctl enable crond设置开机自启
2、哪些用户可以使用crontab命令。
默认所有用户均可以使用crontab命令。因为系统中只存在/etc/cron.deny文件,而该文件为空。其他的同上文的at。

如果不希望某用户使用crontab命令,可以将用户名写在/etc/cron.deny中。
3、cron的运行方式
3.1、/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的。当用户使用crontab命令创建调度任务时,该项工作会被写到/var/spool/cron/目录下,以用户名命名的文件中,例如使用用户sa创建了任务,那么就会存在/var/spool/cron/sa文件。
3.2、cron任务会被记录到/var/log/cron文件中。
4、cron语法
4.1、crontab [-u username] [ -l|-e|-r]
-u user:智能root用户来运行,用来设定某个用户的crontab服务,例如,“-u sa”表示设定sa用户的crontab服务。
-e:编辑当前用户crontab文件内容。
-l:显示crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:删除当前用户所有crontab的调度任务,如果要删除某一项任务,可以使用crontab -e去编辑。
4.2、crontab -e命令所编辑的文件的格式:
4.2.1、字段之间以空格分隔
4.2.2、一共6个字段,前五个指定时间,最后一个为执行的命令,格式如下
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
minute: 区间为 0 – 59
hour: 区间为0 – 23
day-of-month: 区间为0 – 31
month: 区间为1 – 12. 1 是1月. 12是12月.
Day-of-week: 区间为0 – 7. 周日可以是0或7
时间字段可以搭配几个特殊的符号——"*"、"/"、"-"、",",
*:代表所有的取值范围内的数字,即任何时刻都接受。
"/":代表每的意思,每隔n分钟的意思,例如"/5"表示每5个单位,
"-":代表一段时间范围,即从某个时间到某个时间,
",":代表分隔时段的意思,例如每天三点和6点都要执行某一任务。
5、系统配置文件:/etc/crontab
crontab -e是针对用户(非root等系统用户)的cron,如果是系统用户只需要编辑/etc/crontab就可以。
5.1、/etc/crontab文件内容

- 01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是执行的级别为root身份当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是一个目录内(/etc/cron.hourly)的所有可执行文,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!

MAILTO=root:当/etc/crontab文件中的任务执行发生错误或该工作的执行结果输出至stdout或stderr时,将信息发送给哪个用户,默认是给root发送邮件。我们可以指定某一用户。
linux工作调度(计划任务)的更多相关文章
- 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...
- linux例行性工作调度学习(一)
Linux系统中有一种例行性工作(crontab)可以调度,是通过crontab和at来实现的. 这两种工作调度: 一种是例行性的,就是每隔一定的周期要来办的事项. 一种是突发性的,就是这次做完以后就 ...
- 王垠:完全用Linux工作
来自: Zentaur(alles klar) 录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作 ...
- Linux IO 调度器
Linux IO Scheduler(Linux IO 调度器) 每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交 ...
- 完全用Linux工作,抛弃windows
录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...
- Linux IO Scheduler(Linux IO 调度器)【转】
每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request.I/O调度器的基本目的是将请求按照它们对应在块设 ...
- Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八)
我们前面提到linux有两种方法激活调度器:核心调度器和 周期调度器 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测是否有必要 因 ...
- 重识linux-循环执行的例行性工作调度
重识linux-循环执行的例行性工作调度 1 用户的设置 1)/etc/cron.allow 可以使用的账号,在这个文件内 2)/etc/cron.deny 不可以的放在这个文件里面 allow的优 ...
- 【转】完全用Linux工作
我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. NU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了. 我不是 ...
随机推荐
- OptimalSolution(2)--二叉树问题(3)Path路径问题
一.在二叉树中找到累加和为指定值的最长路径长度 给定一棵二叉树和一个32位整数sum,求累加和为sum的最长路径长度.路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链 -3 / ...
- vue条件渲染2
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 原生js实现上拉加载
原生js实现上拉加载其实超级简单,把原理整明白了你也会,再也不用去引一个mescroll啦~ 好了,废话不多说,开始进入正题:上拉加载是怎么去做的,原理就是监听滚动条滑到页面底部,然后就去做一次请求数 ...
- 你还在用BeanUtils进行对象属性拷贝?
在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代 ...
- API 网关知识看这篇就足够了!
本文已经收录自 JavaGuide (60k+ Star[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.) 本文授权转载自:https://github.com/java ...
- 知否知否,VS Code 不止开源
VS Code, 昨夜始于“开源”,如今“开源”深处渡. 读者看到这句话,也许会有疑惑,为什么两个“开源”都加上了双引号? 其实是笔者有意为之,因为这个两个“开源”的意义有着很大的差别,第一个“开源” ...
- 为什么磁盘慢会导致Linux负载飙升?
一.CPU利用率和负载率的区别 这里要区别CPU负载和CPU利用率,它们是不同的两个概念,但它们的信息可以在同一个top命令中进行显示.CPU利用率显示的是程序在运行期间实时占用的CPU百分比,这是对 ...
- MySQL系统变量auto_increment_increment与auto_increment_offset学习总结
在MySQL中,系统变量auto_increment_increment与auto_increment_offset是与自增列相关的两个参数变量.在官方文档中,将其划分为Replication Mas ...
- Netty启动流程剖析
编者注:Netty是Java领域有名的开源网络库,特点是高性能和高扩展性,因此很多流行的框架都是基于它来构建的,比如我们熟知的Dubbo.Rocketmq.Hadoop等,针对高性能RPC,一般都是基 ...
- OI 经典诗歌
键盘行 学校机房夜送客,枫叶蒟蒻秋瑟瑟.主人下马客在船,代码欲写无键盘.夜不AC惨将别,别时茫茫屏幕亮. 忽闻楼上键盘声,主人忘归客不发.寻声暗问敲者谁,键盘声停欲语迟.上楼相近邀相见,添酒回灯重开宴 ...