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 13:49
下一篇 2016-09-19 13:49

相关推荐

  • 优云Automation:实现IT服务弹性伸缩的利器

    随着互联网业务快速持续增长,IT资源使用量按需变化成为常态,这就要求信息部门能快速响应资源使用的变化要求,对运维提出不小挑战。比如电商、在线教育等企业经常推出一些秒杀、抢红包活动,在特定时间段对资源的利用处于高峰期,之后基本处于空闲。 几年前,我们从申请采购到应用部署上线都只能人工操作,需要提前几个月开始规划。如今通过云平台能很好实现资源按需动态管理,运维人…

    系统运维 2017-03-15
  • 几个有意思的小脚本

    ①.用脚本画一个圣诞树 效果 ②.用脚本画一个类似国际象棋的棋盘 半成品效果 再像这样在下面多写几个循环,就可以了,我这个方法太笨,全写完要截图的太多,就放一部分意思下 ③.编写一个脚本,打印出九九乘法表 效果 ④.编写一个脚本,可接收一个 1-7 的数字作为参数,用 if 和 case 两种方法实现根据输入的数字输出对应星期的英文 用if的方法 用case…

    2017-05-11
  • 说说web和http以及lamp/lnmp

    <span style="font-size: 24px;font-family: 宋体,SimSun">**说说web和http以及lamp/lnmp**</span> 说说web和http以及lamp/lnmp 在这篇文章当中你将看到如下内容: web与http的简介,网页的分类 度量网站流量的几个术语——知道…

    2016-05-28
  • LINUX系统文件类型分类

    使用LINUX过程中,时常会对文件进行操作。但是linux中文件究竟有哪些分类呢?今天让我们大家来总结一下吧! 概述:         linux文件可以分为五种类型,分别为:普通文件、目录、字符设备或块设备、套接口文件、符号链接文件。下面详细介绍这几种文件。 1 普通文件[root@lo…

    Linux干货 2017-07-22
  • blog test

    just test

    Linux干货 2017-02-28
  • N22-第七周作业

    1、创建一个10G分区,并格式为ext4文件系统; # fdisk /dev/sda n p 3 w # partx -a /dev/sda  # partx -a /dev/sda # mke2fs -t ext4 -b&nbs…

    Linux干货 2016-10-09