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

相关推荐

  • Linux下inode理解及软、硬链接初探

    1、Inode是什么? 要理解inode,要从文件储存说起。 文件由元数据和数据构成。 文件储存在硬盘上,最小的存储单位叫做“扇区(Sector)”。每个扇区存储512字节。操作系统读取硬盘时,不会一个扇区一个扇区地读取,这样非常低效;而是一次性连续读取多个扇区,即一次性读取一个“块(block)”。“块”由多个扇区组成,常见的大小有1K、2K、4K等,其中…

    Linux干货 2016-07-29
  • diy自己的linux

    准备一台liunx的机器,我用的是liunx虚拟机 单独加载一块硬盘,我加载了一块20G的硬盘,然后用fdisk /dev/sdb进行分区,sdb1用来作为将来系统的/boot分区,所有100M就可以了,sdb2用来作为将来系统的/分区,我给了10G。然后将两个分区格式化为ext4系统。 mkdir /mnt/boot mkdir /mnt/sdc2 mou…

    Linux干货 2016-09-14
  • vsftp的使用(土著篇)

        这个vsftp本地用户登录模式(简称土著)配置方法论坛网站有一堆堆的,都是默认的东西,就那么多也写不出什么花来。     还是直接上酸菜好了,接着上回提到的vsftp的接着用,首先查看下你vsftp的配置情况。      这是上次匿名用户的配置,稍微得改一改。 配置本地用户登录的配…

    2017-07-30
  • vsftpd基于mysql实现用户认证

    一、前言   ftp介绍:     ftp全程是File Transfer Protocol(文件传输协议),方便于实文件交换;但是在文件传输以及账号密码发送时都是以明文传输,因此是一个明文协议 ftp是C/S方式:   常见的客户端有:     GUI方式:browers、FileZilla-cl…

    Linux干货 2015-06-15
  • 用户组和用户权限的使用2

    touch /etc/nologin  echo system is maintanining >> /etc/nologin  可以控制非管理员root之外的所有普通用户不能登陆 7版本里面 cd /run/ touch /run/nologin 效果一样让普通用户不能登陆 ehho weihu > /run/nolo…

    Linux干货 2016-08-04
  • 磁盘管理、文件系统、挂载

    磁盘管理 一磁盘分区 磁盘分区有两种方式:MBR和GPT MBR:1)按照柱面进行分区;分区不超过2T 2)关于0磁道0扇区的前512bytes;其中的446bytes为boot loader;中间的64bytes装有分区表;2bytes为55AA 3)可分4个分区;3个主分区+1扩展(N个逻辑分区)扩展分区最多一个。 GPT分区:1)GUID patiti…

    Linux干货 2016-08-29