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空间 ...
随机推荐
- [Reversing.kr] Easy ELF Writeup
IDA打开,看到main()函数,当sub_8048451() 返回1 是flag正确. 跟踪函数. 脚本: #!usr/bin/env python #!coding=utf-8 __author_ ...
- 解决Eclipse中无法查看Java源码
1.点 "window"-> "Preferences"-> "Java" -> "Installed JRES ...
- Python内置函数(15)——dict
英文文档: class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg) Return a new di ...
- 『2019/3/19 USACO测试 反思与总结』
2019/3/8 USACO测试 这是第三次考试了,不过这一次没有上一次考得好,也算是比较失误的,有一道题思路对但是写挂了. 还是看一下试题安排: 题号 试题分组 考察算法 思维难度 代码难度 1 银 ...
- AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)
昨天一个话题说关于AngularJS2以后版本的两个小技巧,不料引出了另外一个话题,话题起始很简单: "很多的前端框架并不复杂,比如JQuery,引入即用,实时看到效果,多好.到了Angul ...
- 初探设计模式5:Spring涉及到的9种设计模式
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了 ...
- 微服务SpringCloud容器化案例
前言 当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署.因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变 ...
- NTP服务器搭建
NTP服务器搭建 :http://www.jbxue.com/LINUXjishu/22352.html 客户端配置: vim /etc/ntp.conf #server 0.centos.pool. ...
- Refit在ASP.NET Core中的实践
前言 声名式服务调用,己经不算是一个新鲜的话题了,毕竟都出来好些年了. 下面谈谈,最近项目中用到一个这样的组件的简单实践. 目前部分项目用到的是Refit这个组件,都是配合HttpClientFact ...
- [七]基础数据类型之Float详解
Float 基本数据类型float 的包装类 Float 类型的对象包含一个 float 类型的字段 属性简介 用来以二进制补码形式表示 float 值的比特位数 public sta ...