Linux计划任务

计划任务

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

 

计划任务分类:

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

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

 

一、 一次性计划任务

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+10minutes或04pm+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,如果某个用户即不在allow和deny文件中,那么只有root才能使用at,同理,在deny文件中的用户则不能使用at,不在deny 文件中的用户则可以使用at,如果两文件写了同一个用户,首先匹配allow即允许(默认at.allow文件不存在,需用户自己创建)

 

二、周期性计划任务

cron

相关程序包

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

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

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

 

确保crond守护处于运行状态

systemctl  status  crond   7版本的系统

 

service    status   crond   6及6以下版本的系统

 

计划周期性执行的任务交给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 3;done

 

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

sleep命令

 

sleep  number  [SUFFIX]

SUFFIX:

s:秒,默认

m:fen

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文件中以S或M开头的信息追加至/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

相关推荐

  • 【26期】Linux第八周学习小总结

        前言     本周的学习已经过去了,虽然本周学习中老师一直都有说,哎呀,这个不重要,以后有网络管理员给你们来做,了解一下就行,然而话锋一转就又说,其实小公司没有网络管理员,如果你们不好好学,以后就会做得更多更杂的工作,这一周的知识点基本上都是在一个pdf上的,大概有200…

    2017-09-02
  • N22-第二周作业

    一.linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示     cp复制命令:     -i:若目标文件存在,提示是否覆盖目标文件,此选项为已写入alias里,使用时为默认选项     [root@localhost ~]# ls /tmp/…

    Linux干货 2016-08-20
  • centos启动流程

    加电自检 检测硬件是否存在并且能够正常运行,如cpu、内存、硬盘是否存在并能正常运行,以及外围得输入输出设备是否存在,如键盘、鼠标、显示器。 bios启动次序,按照次序查找个引导设备,启动第一个具有引导程序的设备,即为本次启动需要加载的设备。 加载boot loader bootloader安装在mbr中,linux的bootloader程序为grub和li…

    Linux干货 2017-11-14
  • 马哥网络班21期-第六周作业

    请详细总结vim编辑器的使用并完成以下练习题    vim(visual interface):文本编辑器      模式        编辑模式        输入模式        末行…

    Linux干货 2016-09-07
  • N28-第一周

    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別。
    3. 描述Linux的哲學思想,並按照自己的理解對其進行解釋性描述。
    4.說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,並配合相應的示例來闡述。
    5.如何在Linux系統上獲取命令的幫助信息,請詳細列出,並描述man文檔的章節是如何劃分的?
    6.請羅列Linux發行版的基礎目錄名稱命名法則及功能規定。

    Linux干货 2017-12-04
  • linux发行版介绍及其哲学思想

    Linux是一种自由和开源的unix-like操作系统。目前运用领域最广泛、使用人数最多的操作系统。该操作系统的内核是Linus Torvalds在1991年10月5日首次发布。是一个多任务,多用户的操作系统,广泛应用在服务器,手机,平板电脑,电视,电子游戏等领域,我们生活中随处都可以见到linux身影。 Linux诞生 1991 年,在芬兰,赫尔辛基大学的…

    2017-09-16