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空间 ...
随机推荐
- 在 ns-3.25中添加 plc(电力线载波) 模块
上一篇安装好了 ns-3.25,这里继续往里添加 plc 模块.整理之前现推荐一个网站,大家可以参考. 英属哥伦比亚大学(University of British Columbia,UBC)提供NS ...
- Python--(爬虫与数据库的连接)
(每一天都是属于你的!) Python对于初学后巩固基础的人还是更多的来接触python爬虫会更好一些,在Python爬虫中包含很多基础部分知识,并且在项目中会提升你的成功感!加油! 我在工作之余时间 ...
- 10 个深恶痛绝的 Java 异常。。
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:一张图搞清楚 Java ...
- android 缩放平移自定义View 显示图片
1.背景 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 我相信看图的整个步骤,大家或者说用户 ...
- BBS论坛(二十四)
24.1.编辑板块 cms/js/banners.js $(function () { $('.edit-board-btn').click(function () { var self = $(th ...
- Elasticsearch 分词器
无论是内置的分析器(analyzer),还是自定义的分析器(analyzer),都由三种构件块组成的:character filters , tokenizers , token filters. 内 ...
- C#版 - Leetcode 215. Kth Largest Element in an Array-题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- Chapter 4 Invitations——18
But they were all in, and Edward was speeding away. 但是他们都在里面了之后,Edward就加速走了. I drove home slowly, ca ...
- nginx普通配置/负载均衡配置/ssl/https配置
1.nginx普通配置 server { listen ; server_name jqlin.lynch.com; access_log /var/log/nginx/main.log main; ...
- Linux基础知识第七讲,用户权限以及用户操作命令
目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod ...