Linux 中怎么设置计划任务:cron 与 anacron

导读 在本篇中,我们会解释 cron 和 anacron,并向你展示如何在 Linux 中设置 anacron。我们也会比较这两个工具。

cron 在 Linux 设置

cron - 是一个用于运行计划任务如系统备份、更新等的守护进程。它适合在那些 24X7 不间断运行的机器如服务器上运行的计划任务。

命令/脚本被写在 cron 任务脚本中,它是在crontab 文件中被安排的。系统默认的 cromtab 文件是/etc/crontab ,但是每个用户也可以创建自己的 cromtab 文件来在特定时间运行用户定义的命令。

要创建一份个人crontab 文件,只要输入:

$ crontab -e

如何在 Linux 中设置 anacron

anacron 用于以天为单位的频率运行命令。它的工作与 cron 稍有不同,它假设机器不会一直开机

cron 也适合在那些不会 24X7 运行如笔记本以及桌面电脑的机器上运行每日、每周以及每月的计划任务(LCTT 译注:不适合按小时、分钟执行任务)。

假设你有一个计划任务(比如备份脚本)要使用 cron 在每天半夜运行,也许你以及睡着,那时你的桌面/笔记本电脑已经关机。你的备份脚本就不会被运行。

然而,如果你使用 anacron,你可以确保在你下次开启桌面/笔记本电脑的时候,备份脚本会被执行。

anacron 如何在 Linux 工作

anacron 任务被列在 /etc/anacrontab 中,任务可以使用下面的格式(anacron 文件中的注释必须以 # 号开始)安排。

period   delay   job-identifier   command

从上面的格式中:

  • period - 这是任务的频率,以天来指定,或者是@daily 、@weekly、@monthly 代表每天、每周、每月一次。你也可以使用数字:1 - 每天、7 - 每周、30- 每月,或者N - 几天。
  • delay - 这是在执行一个任务前等待的分钟数。
  • job-id - 这是写在日志文件中任务的独特名字。
  • command - 这是要执行的命令或 shell 脚本。

要浏览示例文件,输入:

$ ls -l /var/spool/anacron/
total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly

这是实际发生的:

  • anacron 会检查任务是否已经在 period 字段指定的时间被被执行了。如果没有,则在等待 delay 字段中指定的分钟数后,执行 command字段中指定的命令。
  • 一旦任务被执行了,它会使用 job-id (时间戳文件名)字段中指定的名称将日期记录在 /var/spool/anacron 目录中的时间戳文件中。

现在让我们看一个例子。这个会每天运行 /home/aaronkilik/bin/backup.sh 脚本:

 @daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

当机器在 backup.sh 期望被运行时是关机的,anacron 会在机器开机十分钟之后运行它,而不用再等待 7 天。

这里有两个你应该理解的 anacrontab 文件的重要变量:

  • START_HOURS_RANGE - 这个设置任务开始运行的时间范围(也就是任务只在这几个小时内运行)。
  • RANDOM_DELAY - 这定义添加到用户定义的任务延迟的最大随机延迟(默认为 45)。

这是你的 anacrontab 文件可能看上去的样子。

Anacron – /etc/anacrontab :

# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron‘s entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

下面是 cron 以及 anacron 的比较,帮助你理解何时用他们其中一个。

cron anacron
它是守护进程 它不是守护进程
适合服务器 适合桌面/笔记本电脑
可以让你以分钟级运行计划任务 只能让你以天为基础来运行计划任务
关机时不会执行计划任务 如果计划任务到期,机器是关机的,那么它会在机器下次开机后执行计划任务
普通用户和 root 用户都可以使用 只有 root 用户可以使用(使用特定的配置启动普通任务)

cron 和 anacron 主要的区别在于 cron 能在那些持续运行的机器上有效地运行,而 anacron 是针对那些会在一天内或者一周内会关机的机器。

如果你还知道其他方式,请在评论栏中与我们分享。

原文地址: http://www.linuxprobe.com/cron-anacron-work.html

时间: 2024-10-12 13:33:01

Linux 中怎么设置计划任务:cron 与 anacron的相关文章

linux中怎样设置dhcpd

linux中怎样设置DHCP 在 linux 以下设置 DHCP一点也不复杂﹐您全部要做的仅仅有一个文件﹕/etc/dhcpd.conf . 以下﹐我用我自己的设置文件来说说怎么改动这个文件﹕ default-lease-time 259200; max-lease-time 777600; option domain-name "siyongc"; 这几行我放在文件的开头部份.第一和第二行我定义出租约的预设期限和最高期限﹐ 数值以秒来计算﹐也就是'三天'和'九天'. 然后我指定了网络

rhel7 设置计划任务cron

设置计划任务cron [[email protected] /]# crontab-e no crontab for root - using an empty one crontab: installing new crontab [[email protected] /]# crontab-l */1* * * * echo " I love you Baby! " [[email protected] /]# Youhave new mail in /var/spool/mail

Linux中如何设置服务自启动?

转自:Linux中如何设置服务自启动? 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务,主要用三种方式进行这一操作: ln -s             在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig          命令行运行级别设置 ntsysv            伪图形运行级别设置 注意: 这三种方式主要用于以redhat为基础的发行版 如果还不知道运行级别是什么,那么最好先看看相关

linux中如何设置dhcpd

linux中如何设置DHCP 在 linux 下面设置 DHCP一点也不复杂﹐您所有要做的只有一个文件﹕/etc/dhcpd.conf . 下面﹐我用我自己的设置文件来说说怎么修改这个文件﹕ default-lease-time 259200; max-lease-time 777600; option domain-name "siyongc"; 这几行我放在文件的开头部份.第一和第二行我定义出租约的预设期限和最高期限﹐ 数值以秒来计算﹐也就是'三天'和'九天'. 然后我指定了网络使

linux中进程和计划任务的管理

前言: 在linux中,为了更好的了解和使服务器有序运行,管理员需要对进程和计划任务做相应的操作,以便能够更好的完成维护任务. 这里我们做一些简单的练习. 一.管理系统中的进程. (1)启动系统中的portmap服务,然后使用kill命令终止它的运行. Kill  进程的PID号 (2)查找系统中CPU占用率超过80%的进程,并强行终止该进程. 系统中一般是没有CPU超过80%的进程,可以从http://www.cpuburnin.com/downloads/cpuburn-in.tar.gz网

Linux中如何设置java环境变量

这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径   查看java执行路径   配置java环境变量   java的安装路径和执行路径   注意这里的JAVA_HOME后面一定要带上bin路径,路径设置完成一定要用 export输出,注意export单词不要写错了   设置环境变量后使用java的v参数测试,还是失败,因为没有执行source命令   环境变量修改后执行source命令,使得配置生效   运行sour

Linux中如何设置 at 一次性任务和 crontab 周期性任务计划

首先来看如何设置一次性任务,命令格式为:at [HH:MM] [yyyy-mm-dd]: 查看一次性任务计划的命令为:" atq " 删除一次性任务计划的命令格式为:" atrm [任务编号]" 设置周期性任务计划 以上命令选项 -u 为可选项 下面来设置一条周期性任务计划,每隔三天的22:30备份一次 /etc/ 为 /tmp/test.tar.gz 原文地址:http://blog.51cto.com/14154700/2352117

linux中如何设置DHCP

linux如何设置DHCP 环境:RH linux 9.0 使用linux下常用的dhcpd包. 最新版本 dhcp3.0.5 下载地址: 下载 1.安装: 先拷贝dhcp-3.0.5.tar.gz软件到/tmp目录下 #cd /tmp #gunzip dhcp-3.0.5.tar.gz #tar xvf dhcp-3.0.5.tar 解开后会看到该目录下新建一个子目录dhcp-3.0.5 #cd dhcp-3.0.5 //进入该子目录 #configure #make #make instal

Linux中iptables设置详细(转)

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 以下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了: 1.首先介绍一下指令和相关配置文件启动指令:service iptables start   重启指令:service iptables restart   关闭指令:service iptables stop     然后是相关配置:/etc/sysconfig/iptables