Linux计划任务

计划任务

工作当中有时候需要将某件事情在未来的某个特定的时间执行,而自己确不在机器旁,该如何是好?像这样在每天特定的时间内去安排做一些事情这样,一种事情我们就称之为例行性的计划任务,其实在我们的操作系统当中都有类似的例行性任务计划功能,那如何去像设定闹钟一种在Linux上指定例行性计划任务并实施,主要有两种工具:atcrontab

 

计划任务分类:

一次性的计划任务:只执行一次就结束

周期性的计划任务:每隔一定的周期去做相同的事情

 

一、 一次性计划任务

at用来专门处理一次性计划任务,crontab是根据用户自定义的时间内,循环的去做某些事情

 

at

at是由atd服务提供的,在6版本的系统上使用service atd start启动服务,7版本的系统上使用systemctl start atd启动服务(atd服务不起来,at计划是不工作的,at计划任务是依靠atd服务来工作运行的)

1.at使用方法

at [-V] [-q queue] [-f file] [-mMlbv]  -c job [job…]TIME

-V:显示版本信息

-l:相当于atq,列出指定队列中等待运行的作业

-d n:相当于atrm,删除指定的作业

-c n:查看第n个具体作业任务

-f at要执行的所有任务放置于文件中,让at读取此文件作为要运行的任务,如at –f /root/a.txt

 

2.TIME的格式:定义什么时候进行at任务的时间

HH:MM  12:00

在今天的HH:MM时刻进行,若该时间以过,则明天HH:MM进行此工作

 

HH:MM YYYY-MM-DD   13:00 2016-09-01

强制规定在某年某月的某天的特殊时刻进行该工作

 

HH:MM[am|pm] [Mouth][Date]:如04pm March  10

强制在某年某月的某个时刻进行

 

HH:MM[am|pm] +number[minutes][hours][days][weeks]:如now+10minutes04pm+3days,指在某个特定时间点再加某个时间点后才运行

 

3.模糊时间:

noon:正午

midnight:子夜

teatime:下午四点

 

4.执行方式

交互式(直接在命令执行at命令进入交互模式)

输入重定向

at  –f  文件

 

依赖于atd服务,需要启动才能实现at任务

at队列存放在/var/spool/at目录中

通过/etc/at.allow  /etc/at.deny控制用是否能执行at任务

首先寻找/etc/at.allow文件,文件中的使用才能使用at,没有在allow文件中的用户则不能使用at,如果某个用户即不在allowdeny文件中,那么只有root才能使用at,同理,在deny文件中的用户则不能使用at,不在deny 文件中的用户则可以使用at,如果两文件写了同一个用户,首先匹配allow即允许(默认at.allow文件不存在,需用户自己创建)

 

二、周期性计划任务

cron

相关程序包

cronie:主程序包,提供crond守护进程及相关辅助工具,自身是一个不间断运行的服务

cronie-anacroncronie的补充程序;用于监控cronie任务执行状况,能够实现cronie的任务因为各种原因在过的时间该执行而未执行的任务恢复正常

crontabs:包含CentOS提供系统维护任务

 

确保crond守护处于运行状态

systemctl  status  crond   7版本的系统

 

service    status   crond   66以下版本的系统

 

计划周期性执行的任务交给crond,到指定时间会自动运行

 

(一) 系统cron任务:系统维护作业

/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

五个字段字段的意思分别是分钟         小时                        

 

例如:凌晨4点备份/etc/目录下面的内容到/tmp

0   4   *    *     *     root    tar zcf  /tmp/etc.tar.gz   /etc/

1.时间的有效取值

分钟  0-59

小时  0-23

    1-31

       1-12

       0-7   0.7表示周日


2. 时间通配

*   *   1   *   *   *  每月的1号执行某任务

特定值:给定时间有点取值范围内的值

离散取值

10,40   *   *   *   *  每周每天每小时的第10分钟和第40分钟执行

连续取值:-

*   *    *   *  1-5  周一到周五运行

 

3.在指定时间范围上定义步长

/#:#即为步长

*/3  *   *    *    * 每三分钟执行

 

 

cron的环境变量,cron执行所有命令都去PATH环境变量指定的路径下去找

PATH  /bin:/sbin:/usr/bin:/usr/sbin

 

4.时间格式

@rebootRun once after reboot. 重启后执行

@yearly0 0 1 1 *

@annually0 0 1 1 *

@monthly0 0 1 * *

@weekly0 0 * * 0

@daily0 0 * * *

@hourly0 * * * *

 

5.系统的计划任务

/etc/crontab

/etc/cron.d            配置文件

/etc/cron.hourly   每小时任务

/etc/cron.daily     每日任务

/etc/cron.weekly   每周任务

/etc/cron.monthly  每周任务

 

 

(二) anacron系统

运行计算机关机时cron不运行的任务,CentOS6以后版本取消anacron服务,由crond服务管理

假设计算机没有一直开机

对笔记本电脑、台式机、工作及其他不一直开机的系统很重要

对偶尔要关机的服务器很有用

 

配置文件:/etc/anacrontab,负责执行/etc/cron.daily    /etc/cron.weekly   /etc/cron.monthly中系统任务。/etc/cron.hourly/etc/cron.d/0hourly执行

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

 

#period in days   delay in minutes   job-identifier   command

1       5       cron.daily          nice run-parts /etc/cron.daily

7       25     cron.weekly               nice run-parts /etc/cron.weekly

@monthly 45   cron.monthly            nice run-parts /etc/cron.monthly

字段1:如果在这些日子里没有运行这些任务

字段2:在重新引导后等待这么多分钟后运行它

字段3:任务识别器,在日志文件中识别

字段1:要执行的任务

 

linux系统中管理临时文件

rhel6使用/etc/cron.daily/tmpwatch定时清除临时文件

rhel7使用systemd-tmpfiles-setup服务实现

 

配置文件:

/etc/tmpfiles.d/*.conf

/run/tmpfiles.d/*.conf

/usr/lib/tmpfiles/*.conf

/usr/lib/tmpfiles.d/tmp.conf

d  /tmp 1777 root root 10d

d  /var/tmp  1777  root root  30d

 

命令

system-tmpfiles –clean|remove|create  configfile

 

 

(三) 用户计划任务管理

用户级别的周期性计划是通过crontab命令实现的,其也有对应的配置文件/var/spool/cron、目录中与用户名同名的文件中,可以通过crontab命令来指定任务计划

crontab命令(实则打开的是一个vim编辑器编辑里面的内容)

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

-l:列出所有 任务

-e:编辑任务

-r:移除所有任务

-i:通-r一同使用,以交互式模式移除指定任务

-u user:仅root可运行,指定用户管理cron任务

 

控制用户执行计划任务

/etc/cron.allow(文件默认不存在)  /etc/cron.deny

管理机制跟at相同

普通用户执行crontab具有suid权限,当root用户更改了普通用户的计划任务的属主为root,普通用户修改,文件被覆盖了,文件的属主又变成普通用户了

 

注意:运行结果的标准输出和错误以邮件通知给相关用户

command  > /dev/null

command &> /dev/null

 

对于cron任务来讲,%有特殊用途,如果在命令中要使用%,则需要转义;不过,如果把%防止于单引号中,也可以不用转义

 

我们知道在计划当中最小单位是分钟,那我们实际工作中有时需要更精确的执行某项任务,需要达到秒级别的任务,那该如何实现呢,实则可以用循环的方式来执行如下:

*  *  *  *  *   for  min   in  0   1   2  do echo  “hi”;sleep 3done

 

如何实现每7分钟运行一次任务

sleep命令

 

sleep  number  [SUFFIX]

SUFFIX

s:秒,默认

mfen

h:小时

d:天

 

 

 

1、  每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd

crontab  -e

*   *   *   *  2,4,7   tar  -zcf   /logs/messages-`date ‘+%F’`   /var/log/messages

 

2、  每两小时取出当前系统/proc/meminfo文件中以SM开头的信息追加至/tmp/meminfo.txt文件中

*   */2  *   *   *  grep –Eo “^[sM].*” /proc/meminof >> /tmpmeminfo.txt

 

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/45121

(0)
fszxxxksfszxxxks
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • N22-第十三周作业

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)  1)共享名为shared,工作组为magedu;  2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;  3)添加samb…

    Linux干货 2016-11-14
  • 马哥教育网络21期+第六周练习博客

    马哥教育网络21期+第六周练习博客 请详细总结vim编辑器的使用并完成以下练习题     VIM编辑器:         vi:Visual Interface 文本编辑器    &nbsp…

    Linux干货 2016-08-05
  • linux存储系统流程简介

    存储系统是linux系统非常重要,也是非常基础的知识点。整个存储系统涉及到知识点也非常的多。 本文主要通过磁盘简介->分区管理->文件系统管理->文件存储结构->软连接和硬链接->挂载原理->常见存储相关操作命令,这一条主线来让大家对linux的整个存储系统有个初步,清晰的了解. 1.磁盘简介   &n…

    Linux干货 2015-12-15
  • 精解局域网访问及共享(三)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/155109    上一节中的2种情况都是默认的简单共享,下面我们着重分析一下高级共享方式下的各种访问情况。毕竟这种方式用的很普遍,而且在权限…

    Linux干货 2015-03-25
  • Centos6启动流程详解

    一、名词解释 POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。 BIOS:Basic Input andOutput System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系…

    2017-03-28
  • Linux运维学习历程-第八天-Linux文本工具sed与Vim(vi)

    概述:    本篇我们主要学习两个功能非常强大的文本编辑器,了解这两种文本编辑器的各自的特点 一、sed命令:  1、sed简介:     sed(Stream EDitor)是一种流编辑器、行编辑器。逐行处理文本内容,即一次处理一行内容,处理时,当前处理的行存储在“模式空间”(pattern sp…

    Linux干货 2016-08-15