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

相关推荐

  • DHCP简单阐述及配置实现方法

    DHCP是什么…… DHCP是Dynamic Host Configuration Protocol的缩写,它是TCP/IP协议簇中的一种,主要是用来给网络客户机分配动态的IP地址。 其主要功能是: 用于内部网络或网络服务供应商自动分配IP地址给用户 用于内部网络管理员作为对所有电脑作中央管理的手段 直接点就是,这些被…

    Linux干货 2016-12-05
  • 设计模式(六)桥连模式Bridge(结构型)

    1. 概述       在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度? 例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的…

    Linux干货 2015-06-26
  • Hadoop实战实例

     Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样, MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器…

    Linux干货 2015-04-13
  • 抓包获取QQ好友IP地址

    作者:网海过客 原文连接:https://www.chinasa.net/archives/326.html 原理:通过抓包软件,抓取QQ进程,向QQ好向发送UDP数据包,获取QQ好友IP地址 抓包软件:科来网络分析系统 步骤: 1、打开抓包软件,选择网卡,本地进程分析。 2、向QQ好友发起语音通话 3、在抓包软件里,找到QQ进程,数据包,过滤UDP协议,在…

    Linux干货 2017-06-30
  • N25-第二周作业

    第二周作业 1.Linux上的文件管理命令都有哪些,其常用的使用方法及相关示例演示。 Linux上的文件管理命令有:cp , mv , rm 等命令 cp是复制命令: 命令使用格式是: cp [OPTION]… SOURCE… DEST 例:root@vps ~]# cp /etc/passwd /tmp 复制…

    Linux干货 2016-12-14
  • 数据库存储引擎—InnoDB

    MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

    Linux干货 2018-02-22