linux 任务计划,crontab、at 、anacron

有时候需要对系统进行一些重比较耗时占资源的系统维护工作,或一些重复的操作如每日备份等。最好的方法是把这些任务安排在深夜系统负载最小的时候。linux系统上常使用crontab、at 命令来实施计划任务。计划任务分为一次性计划任务,和周期性计划任务。

一次性计划任务:任务只执行一次后不会再进行第二次

可以使用的命令:at、bath

周期性任务执行:重复执行相同的任务,直到用户删除此任务。

可以使用的命令:crontab、anacron

at命令:

交互式:让用户在at > 提示符输入多个要执行的命令;

批处理:将任务的各需要执行的命令写入文件,由at进行调用

1、交互式计划任务

[[email protected] ~]# at now+3min   \\ 定义一个3分钟后执行的任务
at> ls /var   \\需要执行的命令,如果有多个可以用enter来换行继续输入
at> <EOT>  \\ ctrl+d
job 3 at 2016-03-18 09:08

2、批处理创建计划任务

使用-f 指定需要执行的脚本文件

[[email protected] ~]# at now+1min -f /root/backup.sh 
job 4 at 2016-03-18 09:17

3、查看作业队列

[[email protected] ~]# at -l
1    2016-03-18 09:30 a root
2    2016-03-18 09:40 a root
[[email protected] ~]# atq
1    2016-03-18 09:30 a root
2    2016-03-18 09:40 a root

4、删除作业

[[email protected] ~]# at -d 2   \\ 2表示为作业的编号
[[email protected] ~]# atq
1    2016-03-18 09:30 a root

任务计划的执行结果会通过邮件的方式发送给任务提交者;

模糊时间:
                now, noon正午, midnight午夜, teatime下午4点, tomorrow明天

**********************************

crontab 设置定时任务

crontab [-l | -r | -e | -u user]

常用选项:
        -l:查看自己的cron任务列表;
        -e:通过EDITOR变量中定义的编辑器打开用户自己的cron配置文件;
            编辑单独的任务都使用-e选项,无论是删除、修改还是新建;
        -r:移除crontab文件

-u  UserName:为别的用户配置crontab作业,只有管理员才能执行此操作。

(a)、crontab任务计划需要依靠crond服务,要想任务计划生效需保计服务正常运行

# service crond status
crond (pid  1814) is running...

(b)、和crontab相关的几个常用的文件

系统cron文件

/etc/crontab
    用户cron文件:
        /var/spool/cron/UserName
    任务计划 黑名单列表

对于不允许用户做任务计划的用户可以写入这个文件中

/etc/at.deny

(c)、cron执行的结果对于那些没有用户的来说,执行成功后会发邮件给root用户,对于有些不需要收到邮件的可以通过输出重定向而拒收邮件:
    &> /dev/null
    > /dev/null 2>&1
    MAILTO=""

/etc/crontab文件:每行定义一个独立的任务;

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

文件中每一行的格式如下所示

分钟   小时   日期   月份   星期   命令

分钟: 从0~59之间的任何数整数。

小时:从0-23之间的任何整数。

日期:从1-31之间的任何整数。(如果指定的月份,则必须是该月份的有效日期)

月份:从1~12之间的任何整数。

星期:从0~7之间的任何整数(0和7都表示星期天),也可以使用sun,mon,tue,wed,thu,fri,sat。

在以上值中,可以使用 * 号表示所有值,如分钟的 *  号表示0~59之间的任何数。

时间表示法:
    1、每个时间位都应该使用其可用的有效取值范围内的值;
    2、某时间位上的*表示对庆应位的所有有效取值;
    3、-: 连续的时间相邻点取值;
    4、,: 离散的时间点取值;
    5、/#:表示在指定时间范围内每隔#一次;
        5-45/3 * * * *

注意1:如果在crontab的用户命令中使用%,得转义为\%

*/1 * * *  *  /bin/tar -Jcf /tmp/etc.`date +\%F-\%s`.tar.xz /etc/*

注意2:在crontab任务中的command最好使用完整的路径如/bin/tar

练习:
    1、每3分钟执行一个“echo "how are you?";

*/3 * * * * /bin/echo "how are you?"

2、每周2、4、6备份/etc/目录至/backup目录中,备份的文件名以当etc_开头并跟上当日的日期作为文件名;

0 0 * * 2,4,6  /bin/tar -Jcf etc_`date +%F`.tar.xz /etc/*

3、每天6、9、12、15、16、17、18查看一下当前系统挂载的所有文件系统,并将查看的结果追加至/tmp/mounts.txt文件中;

0 6,9,12,15-17 * * * /bin/mount >> /tmp/mounts.txt

4、每天每两小时取当前系统内存空间余量,将其保存至/stats/memory.txt文件中;

0 */2 * * *  /bin/grep "MemFree:"  /proc/memoryinfo  >> /stats/memory.txt

0 */2 * * * [ -d /stats ] || /bin/mkdir /stats ;/bin/grep "MemFree:" /proc/meminfo  >> /stats/meminfo.txt

crontab文件的格式:
        空白行会被忽略
        # 开头的行是注释;

如何实现秒级别的任务:
    * * * * * for i in {0..4}; do /bin/echo "how are you?"; sleep 10; done
每21秒执行一个任务

像这种不是整数的时间,只能采用死循环的方式来进行

while true:; do /bin/echo "how are you?" sleep 21; done

anacron: 最小刻度是天;
是crontab的补充,用于检查crontab中某任务在过去的一个周期内是否没有执行,
如果没有执行,则在开机以后的某时间点让其执行执行一次,无论其周期是否到达;
    2 3 * * * some_job

时间: 2024-10-10 17:35:32

linux 任务计划,crontab、at 、anacron的相关文章

Linux任务计划(crontab)

1.crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令. 可以让计算机在规定的时间内,执行相应的计划. 2.实例 # crontab –e0 6 * * * /root/bin/backup.sh 这样Linux将会在每天早上6点运行 /root/bin/backup.sh 3.命令   crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建.   crontab –l : 显示 crontab 文件.   crontab -r : 删除 c

配置Linux任务计划

标签: 任务计划 linux计划任务 linux任务计划 crontab   分类: Linux Linux有三种计划任务: at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用) cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行) 系统级别的计划任务及其扩展anacron:在一个指定时间间隔错过后自动执行任务 一.at服务:安排一个任务在未来执行,需要一个atd的系统后台进程 #at now+2 minutes 回车 >输入要执行的命令 >ctrl+d

linux下使用crontab实现定时PHP计划任务失败的原因分析

这篇文章主要介绍了linux下使用crontab实现定时PHP计划任务失败的原因分析,需要的朋友可以参考下 很多人在linux下使用crontab实现PHP执行定时任务却未能成功,不能生成缓存.本文就linux下使用crontab实现定时PHP计划任务失败的原因做一分析. 一般我们linux定时执行php代码例如: 1 */5 * * * * /usr/local/php/bin/php /home/wwwroot/1.php 其实这样是可以执行php代码的. 但是为什么很多朋友在1.php写的

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

Linux 任务计划,周期性任务执行

Linux 任务计划.周期性任务执行 概述: 什么是任务计划呢?就像我们每个人日常生活中都会使用到的闹钟一样,按时的去提醒该去做什么事情,以免忘记.同样,我们在工作当中也要在每天在特定的时间内安排做一些事情,这就是任务计划,本章将学习如何制定Linux系统的任务计划,这里主要包括两种工具:at和crontab. 一.定义 1.任务计划的分类:      一次性的任务计划:只执行一次就结束:      周期性的任务计划:每隔一定的时期去做相同的事情:2.使用的命令      未来时间点执行一次某任

linux任务计划详解

linux任务计划.周期性任务执行 未来的某个时间点执行一次某任务:at,batch 周期性运行某任务:crontab     执行结果:会通过邮件发给用户 mail 简单使用 查看本地电子邮件服务是否开启         ~]$ netstat -tnlp     ~]$ ss -tnl     确保 127.0.0.1:25 处于监听状态就行 本地电子邮件服务:    smtp:simple mail transmission proticol    pop3:post Office Pro

linux应用之crontab定时任务的设置

实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下: vixie-cron软件包是cron的主程序.crontabs软件包是用来安装.卸装.或列举用来驱动 cron 守护进程的表格的程序. 查看是否安装了cron软件包: rpm -qa|grep vixi

linux任务计划总结

1.总结Linux系统上的任务计划(at.crontab)的详细使用方法: Linux的计划任务方式有3种 1.batch:由系统自行选择在资源较为空闲时运行指定的任务,不需要指定时间点,这个不常用,就不多介绍了 2.at:用来在指定时刻一次性执行某个任务 用法:at [option]... TIME a)输入后会进入at>命令提示符环境, b)输入需要执行的任务,然后输入ctrl+d表示提交任务 c)最终结果通过邮件发送给用户,可使用mail命令查看,可通过ss -tnl看邮件25端口是否开启

Linux 任务计划 at,cron

linux上的任务计划: 一种是突发性的,就是未来某个时间点一次性执行某任务 相关命令:at , batch 一种是周期性的,就是每个一定的周期执行某任务 相关命令:crontab at 命令:处理仅需要执行一次就结束的任务 at 命令的执行必须要有atd服务的支持,启动atd服务. 注意:centos7 中对于服务的配置有变化,以下命令仅适用7之前版本,这部分正在查资料,很快补充说明. #开启atd服务 [[email protected] ~]# /etc/init.d/atd restar