Linux操作系统--定时任务
最近在学习Linux操作系统。学到了关于定时任务的章节,作为一个总结写下这篇文章。在Linux中,我们可以将耗时大的任务如复制大文件,压缩、解压缩大文件等放进定时任务中(深夜执行,因为工作时间访问量大,这类操作会影响系统运行)。
Linux操作系统中关于定时任务主要有种操作方式:
1. at 一次性定时任务
2. crontab循环定时任务
3. anacron配置
(1)at一次性定时任务
1. 确定at是否已经安装
chkconfig --list | grep atd
一般at是系统必定安装的程序(服务)
2. at服务的启动
service atd restart
3. 查看状态
service atd status
其他at管理命令
1. 查看系统下有的at任务
atq
2. 删除指定的任务
atrm [工作号]
关于at命令的用户访问权限控制(服务的控制机制)

系统中默认有at.deny文件
如果系统中两个文件都不存在,那么只有root用户可以使用at命令
因此在配置用户功能的时候需要写at.allow和at.deny文件
at命令参数:
格式:
at [选项] 时间
选项:
-m : 当at工作完成后,无论是否命令有输出,都用email方式通知执行at命令的用户
-c : 工作号,显示该工作的实际内容
输入时间之后会显示
at> [要求输入at执行的任务]
例如:
1. 数据同步,使内存中的数据与磁盘数据同步
at>/bin/sync
2. 在指定时间重启
at>/sbin/shutdown –r now
实际使用中不建议使用定时任务来重启,应该使用人工,以避免在操作系统自动重启的过程中出现一些偶然的错误而导致重启失败。
(2)crontab循环定时任务
此方式平常用得比较多,定时任务会保存在临时文件中。
crontab命令进程(Linux中每一个命令都是使用进程来运行的)的运行是依靠crond服务的,并可以对定时任务进行管理与访问控制。crond是Linux操作系统在安装的时候必须安装的服务之一。
crontab相关命令和用法:
1. 在config配置文件中查找(grep)是否有cron这个服务
chkconfig --list | grep cron
注意:这个命令是只在Redhat系列的Linux操作才有,ubuntu是没有的,需要用sysv-rc-conf替代。
实例:
root@Thomson:~# chkconfig --list|grep cron
anacron 2:on 3:on 4:on 5:on
cron 2:on 3:on 4:on 5:on
2. 查看crond服务状态
service crond status
3. 启动、停止、重启crond服务
service crond start/stop/restart
crontab命令的用户访问权限控制

crontab命令参数:
格式:
crontab [参数选项]
参数选项:
-e :编辑crontab定时任务
-l 查询crontab任务(cron tab)
-r :删除当前用户所有的crontab任务
注意:
1. crontab -e 是在当前用户的权限下执行的,即crontab命令绑定了当前的用户。如果不是root用户,有些权限是不能执行的,例如关机等。
2. Linux系统中脚本一般不写循环,因为容易出现死循环的问题。而crontab默认是循环的,根据时间间隔循环
例如:
crontab –e (edit) #进入crontab编辑界面。一般默认是用vim进行编辑工作
cron文件内容:
#Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
定时时间格式:
*****执行的任务
* 号的含义:

注意:
1. 是一小时中的第几分钟
例如:10 * * * * 表示1:10 、 2:10执行
2. 如果第一个写*,默认是每分钟执行一次,所以一般会写上数字来确定是一小时中的固定时间进行定时任务而不是每隔多少时间进行
每隔多少分钟执行
*/10 * * * * 每隔10分钟执行一次
一般大操作在凌晨4、5进行,据说是因为访问量最少

特殊表达式:
0 0 1,15 * 1
每个月的1号、15号和周一三种情况都会执行
注意 : 日期和周几最好不要一起使用
crontab使用注意事项:
文件路径一定要用绝对路径,因为定时任务的路径跟系统的PATH路径是不同的,如果不写绝对路径,很有可能执行不了
实验:
1. 检测定时任务是否能正常工作
1)终端输入
tltx@Thomson:~$ crontab –e
进入编辑页面
2)在编辑页面中添加
*/1 * * * * echo '123456' >> /home/tltx/test.sh
每隔一分钟在test.sh文件中写入 123456 字符串
3)查看test.sh文件
tltx@Thomson:~$ cat /home/tltx/test.sh
#! bash/bin
123456
123456
123456
123456
4)删除任务
crontab -r
5)检测是否删除成功
tltx@Thomson:~$ crontab -l
no crontab for tltx
cron文件中之前编辑的定时任务也会自动删除
系统crontab设置
可以设定用户身份
配置文件在操作系统中存放的目录:
/etc/crontab
需要注意的是,这个文件只能有root用户来编辑
以前的cetos Linux系统的crontab文件会有以下的一些配置,默认每小时,每天,每周,每月执行的任务,只要把定时任务放在/etc/cron.hourly这些文件中就可以实现系统配置的定时任务。目前crontab不再管理以下的文件,而用anacron管理

(3)anacron配置
服务器在执行定时任务的时候因为宕机等故障问题而无法执行或者系统关机错过执行的时候,anacron会在系统恢复正常的后检测cron相关文件,重新执行定时任务。虽然实际环境中,服务器宕机的可能性还是比较小的,但anacron为定时任务提供了另一层保障。
anacron只会检测cron.hourly , cron.daily , cron.weekly , cron.monthly这些文件,所以定时任务需要添加到这些文件中。
以上文件在操作系统中的存放地址:
/etc/
另外还有与定时任务执行记录相关的文件:
/var/spool/anacron/ 中同样存放着cron.{daily,weekly,monthly}文件,用于记录上次执行定时任务的时间(格式为:年月日),定时任务在执行之前会将里面存放的记录时间和当前时间做比较,如果时间差大于/etc/文件夹下cron.{daily,weekly,monthly}文件中的定时任务设定的时间,就知道有cron任务被遗漏。然后会补上执行遗漏的任务。
注意:这种检测机制只精确到了天,小时和分钟的定时任务无法检测。
关于cron.{daily,weekly,monthly}文件夹

在新版本中,就不需要检测anacron服务是否开启了,因为已经变成系统命令。
查看cron.daily文件夹文件:
# ls
cron.daily文件夹

其中0anacron.sh是最关键的一个执行文件
查看0anacron文件内容:
#cat 0anacron(无注释的为添加的定时任务)

Linux操作系统--定时任务的更多相关文章
- Linux之定时任务
定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调 ...
- Linux设置定时任务
什么是crond? crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件.一般情况下当我们安装完成Linux操作系统之后,默认便会启动Crond任务调用服务.Crond服务会定 ...
- Linux系统定时任务crond那些事
1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/ linux系统安装完操作 ...
- Linux之定时任务Crond介绍
Linux之定时任务 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便 ...
- Linux学习之九-Linux系统定时任务
Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一 ...
- 【实操干货】做好这 16 项优化,你的 Linux 操作系统焕然一新
大家好,这次跟大家谈谈又拍云的操作系统优化方案.往简单地说,我们使用的 Linux 操作系统主要都是基于 CentOS6/7 的精简和优化.往复杂地说,则是我们有两套系统,业务上使用的定制 Linux ...
- Linux操作系统备份之三:通过二进制拷贝(dd)方式实现Linux操作系统数据的备份
前面有两篇文章,<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>和<Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份& ...
- Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份
http://www.tektea.com/archives/2163.html. 在<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>文章中,我们介绍了使 ...
- 安装linux操作系统
安装双操作系统; 1 0. 介绍: 1 1 实验环境: 2 2. 实验准备: 2 3.开始安装: 2 1 制作U盘启动工具: 2 2.安装LinuxOS. 3 2.1在windowOS中划分60G空间 ...
随机推荐
- [Swift]LeetCode341. 压平嵌套链表迭代器 | Flatten Nested List Iterator
Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...
- [Swift]LeetCode678. 有效的括号字符串 | Valid Parenthesis String
Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...
- [Swift]LeetCode1015. 可被 K 整除的最小整数 | Smallest Integer Divisible by K
Given a positive integer K, you need find the smallest positive integer N such that N is divisible b ...
- 美国5G:初步上线玩砸,信号难寻和4G无差别
事件背景: 自从美国最高联邦法院给美国国会立法机关送去了传票之后,至今为止还暂时没有动静.传票限期两个月,不开庭就视为自动败诉,目前离最后的期限应该还有一个月的时间,静心等待结果就好. 不过这段时间, ...
- MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则
做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟 ...
- MySQL优化配置之query_cache_size
原理MySQL查询缓存保存查询返回的完整结果.当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段. 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失效 ...
- python +selenium识别不来click事件,出现报错
assert "login" in browser.title browser.implicitly_wait(10) elem = browser.find_element_by ...
- 并发编程(八)—— Java 并发队列 BlockingQueue 实现之 ArrayBlockingQueue 源码分析
开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列的阻塞 ...
- Eureka中的核心概念
图片的链接出了一点小bug,导致图片不能正常访问,小伙伴们可以移步这里:https://mp.weixin.qq.com/s/kAqOTKUt_qPlxzI4aGS5Pw 本文是Spring Clou ...
- 如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)
XSS 全称Cross Site Scripting 即‘跨站脚本攻击’. 从其中文释义我们能直观的知道,这是一种对网站的攻击方式. 其原理在于,使用一切可能手段,将可执行脚本(scripting)植 ...