最近在学习Linux操作系统。学到了关于定时任务的章节,作为一个总结写下这篇文章。在Linux中,我们可以将耗时大的任务如复制大文件,压缩、解压缩大文件等放进定时任务中(深夜执行,因为工作时间访问量大,这类操作会影响系统运行)。

Linux操作系统中关于定时任务主要有种操作方式:

1. at 一次性定时任务

2. crontab循环定时任务

3. anacron配置

1at一次性定时任务

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

实际使用中不建议使用定时任务来重启,应该使用人工,以避免在操作系统自动重启的过程中出现一些偶然的错误而导致重启失败。

2crontab循环定时任务

此方式平常用得比较多,定时任务会保存在临时文件中。

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管理

3anacron配置

服务器在执行定时任务的时候因为宕机等故障问题而无法执行或者系统关机错过执行的时候,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]LeetCode620. 有趣的电影 | Not Boring Movies

    SQL架构 Create table If Not Exists cinema (id ), description varchar(), rating , )) Truncate table cin ...

  2. [Swift]LeetCode837. 新21点 | New 21 Game

    Alice plays the following game, loosely based on the card game "21". Alice starts with 0 p ...

  3. 1.python简介

    简介 1.python语言介绍 python的创始人:Guido Van Rossum 2.python是一门什么样的语言 编程语言主要从以下几个角度进行分类:编译型,静态型,动态性,强类型定义语言和 ...

  4. 搭建自己的hexo博客

    这是我最近用hexo搭建的个人博客,欢迎来参观留言,以下是我创建这个hexo的一步步步骤,欢迎指正! 我的博客 参考自 潘柏信的博客;CnFeat 主题参考这里 pacman; 主题选自这里 hexa ...

  5. github学习:如何从本地把项目上传到github&&如何把github项目通过clone复制下来,详细教程

    一.第一步---注册一个Github账号 首先要在GitHub上创建一个帐号,可以去官方网站注册一个账号. 前提:本地安装一个git 本人github:https://github.com/saucx ...

  6. JavaScript 中 正则替换 replace

    本文初步介绍 replace 在 js 中,我们常常会遇到 用来 解决开发中常会遇到的 问题的 知识总结, 如果你已经 非常熟悉,又可以绕道了. 定义和用法 replace() 方法用于在字符串中常用 ...

  7. docker~在centos容器中安装新程序

    上一篇我们使用了阿里加速器安装了centos镜像,然后创建了一个新容器,运行了这个镜像,这一讲我们来为这个镜像添加一些应用程序,然后再保存容器,push容器到仓储,大家就可以直接pull我生产的容器了 ...

  8. Why DDD and layered architecture

    As a developer, you may think that your job is to write code. However, Software development is not a ...

  9. LeetCode专题-Python实现之第26题:Remove Duplicates from Sorted Array

    导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...

  10. J2EE规范总结

    概述 J2ee是我们步入java学习的一个開始.它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的.解释的.健壮的安全的.结构的中立的,可移植的.性能非常优异的多线程的,动态的 ...