最近在学习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操作系统--定时任务的更多相关文章

  1. Linux之定时任务

    定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调 ...

  2. Linux设置定时任务

    什么是crond?  crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件.一般情况下当我们安装完成Linux操作系统之后,默认便会启动Crond任务调用服务.Crond服务会定 ...

  3. Linux系统定时任务crond那些事

    1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/ linux系统安装完操作 ...

  4. Linux之定时任务Crond介绍

    Linux之定时任务 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便 ...

  5. Linux学习之九-Linux系统定时任务

    Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一 ...

  6. 【实操干货】做好这 16 项优化,你的 Linux 操作系统焕然一新

    大家好,这次跟大家谈谈又拍云的操作系统优化方案.往简单地说,我们使用的 Linux 操作系统主要都是基于 CentOS6/7 的精简和优化.往复杂地说,则是我们有两套系统,业务上使用的定制 Linux ...

  7. Linux操作系统备份之三:通过二进制拷贝(dd)方式实现Linux操作系统数据的备份

    前面有两篇文章,<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>和<Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份& ...

  8. Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份

    http://www.tektea.com/archives/2163.html. 在<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>文章中,我们介绍了使 ...

  9. 安装linux操作系统

    安装双操作系统; 1 0. 介绍: 1 1 实验环境: 2 2. 实验准备: 2 3.开始安装: 2 1 制作U盘启动工具: 2 2.安装LinuxOS. 3 2.1在windowOS中划分60G空间 ...

随机推荐

  1. [Swift]LeetCode786. 第 K 个最小的素数分数 | K-th Smallest Prime Fraction

    A sorted list A contains 1, plus some number of primes.  Then, for every p < q in the list, we co ...

  2. [Swift]LeetCode959. 由斜杠划分区域 | Regions Cut By Slashes

    In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank space.  Th ...

  3. Linux 下源码编译FFMEG

    目录 1. 安装依赖关系 2. 源码安装 yasm 3. 源码安装 NASM 4. 源码安装libx264 5. 源码安装x265 6. 源码安装 libmp3lame 7. 源码安装 libopus ...

  4. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  5. 优化之Normalizer组件

    Normalizer会产生记录,尽可能的将Normalizer组件靠近Target ---------------------------------------------------------- ...

  6. Hbase篇--HBase中一对多和多对多的表设计

    一.前述 今天分享一篇关于HBase的一对多和多对多的案例的分析. 二.具体案例 案例一.多对多    人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角 ...

  7. 干货 | Java8 新特性教程

    本教程翻译整理自 https://github.com/winterbe/java8-tutorial 本教程首发自个人网站: https://www.exception.site/java8/jav ...

  8. 如何优雅的利用Windows服务来部署ASP.NET Core程序

    上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...

  9. vue组件如何被其他项目引用

    自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何让其他项目引用.本文就粗细的介绍下,如有疑问欢迎共同讨论.在这里你能了解下如下知识点: 1. 如何发布一个包到npmjs仓库上 2.如何引用 ...

  10. Chorme浏览器渲染MathJax时出现竖线的解决方法

    Chorme浏览器渲染MathJax时出现竖线的原因分析与解决方法 查资料知,Chorme中显示MathJax时出现竖线的原因如下: 新版的Chorme浏览器在解析css时,会对其中的值进行向上取整( ...