Linux任务计划

Linux任务计划主要分为分为两种分别是一次性任务计划和周期性任务计划实现工具主要是at和crontab下面将详细介绍任务计划工具的使用。

1、at命令一次性任务计划

at命令是由atd服务提供的其主程序包是atd在CentOS6上可以使用service atd start命令来启动在CentOS7上需要使用systemctl start atd.service来启动服务。

at命令常用方法

at TIME:最简单的使用方法是at跟上时间以交互式的方法创建任务计划最后以Ctrl+d结束。

at -f FILE TIME:从指定文件中读取作业任务而不用再交互式输入

at -l:相当与atq列出系统上的所有当前用户的at队列

at -d job:相当于atrm可以删除一个指定的作业

at -c job:查看具体作业任务

at创建的任务都放在/var/spool/at目录下并且at作业任务的执行结果中如果有标准输出和错误输出则都是以邮件的形式通知给相关用户。

TIME的时间格式有

HH:MM:当天时间的几点几分执行任务如果该时间已过则明天此时执行任务还可以使用下面定义好的时间格式

    noon:中午12点

    midnight:凌晨即零点

    teatime:下午茶时间具体为下午4点

HH:MM yyyy-mm-dd:某年某月某日的几点几分执行任务

HH:MM[am|pm] [Month] [Date]:同上也是指定具体某天的某时刻执行如04pm March 17

HH:MM tomorrow:明天的几点几分执行

now + # (minutes,hours,days,weeks):从现在时间起再加#分钟或#小时或#天或#周后执行

默认情况下所有用户都可以使用at命令创建一次性计划任务如果管理员需要控制具体那些用户可以使用at创建计划任务则可以通过黑名单拒绝或白名单允许的方式控制并且默认情况下系统自带有黑名单文件/etc/at.deny在其中填写不允许使用at命令的用户名单即可同理也可以手动创建白名单/etc/at.allow在其中填写允许用户的名单即可若黑名单和白名单同时存在则黑名单不生效只有白名单中的用户可以使用at命令创建任务。

2、batch命令一次性任务计划

batch创建的也是一次性任务计划和at的用法几乎一致但batch不需要指定时间batch会让系统自行选择空闲的时间去执行指定的任务。

3、crontab命令周期性任务计划

crontab命令需要crond守护进程提供服务其主程序包是cronie。通过crontab命令向crond提交计划任务与at不同它需要使用专用的配置文件且此文件具有固定格式。

cron任务分为两类一类是系统cron任务主要用于实现系统自身的维护而创建的周期性任务一般情况下系统任务是不需要手动添加的在安装系统时会自动创建如果需要新增系统任务的话可以手动编辑/etc/crontab文件。一类是用户cron任务根据用户需求自定义的周期性任务其创建方式可以使用crontab命令创建crontab命令创建任务时会自动检测语法错误且创建的任务配置文件会以用户名的方式自动保存在/var/spool/cron/目录下。

系统cron任务的格式为

# .—————- 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

共7个字段前5个字段表示时间第6个字段表示以某用户身份运行第7个字段表示具体命令任务每一行表示一个周期性任务。

用户cron任务的格式与系统cron任务格式基本一致但用户cron任务不需要再指定以哪个用户身份运行了直接跟具体命令任务即可所以用户cron任务一共有6个字段。

cron任务的时间表示法:

1)、特定值给定时间点有效值范围内的值

2)、星号*表示特定时间点上有效值范围内的所有值表示“每…”

如:每年10月1号的中午12点表示为:0 12 1 10 *

每天的晚上18点表示为:0 18 * * *

每周一的早上点表示为:0 8 * * 1

3)、离散取值

如:每天的早上点和晚上18点表示为:0 8,18 * * *

每月的1号和15号表示为:0 0 1,15 * *

每周的周一和周五表示为:0 0 * * 1,5

4)、连续取值

如:每天的8点到18点表示为:0 8-18 * * *

每月的1号到15号表示为:0 0 1-15 * *

每周的周一到周五表示为:0 0 * * 1-5

5)、在指定时间范围上定义步长

如:每3分钟表示为:*/3 * * * *

每隔3天表示为:0 0 *3 * *

6)、系统定义好的时间

@reboot :每次重启后执行一次

@yearly和annually : 都表示为每年的1月1号:0 0 1 1 *

@monthly : 每月的1号 :0 0 1 * *

@weekly : 每周的周日 :0 0 * * 0

@daily :每天的凌晨:0 0 * * *

@hourly :每小时的整点:0 * * * *

crontab命令的常见用法有:

创建用户周期性任务命令为:crontab -e

列出所有用户周期性任务命令为:crontab -l

删除所有用户周期性任务命令为:crontab -r

root用户为指定用户创建或管理cron任务:crontab -u USER

cron任务也可以通过黑名单和白名单的方式控制用户使用crontab命令创建任务的权限默认情况下系统自带有黑名单/etc/cron.deny也可以手动创建白名单/etc/cron.allow当白名单和黑名单都存在时黑名单失效只有白名单中的用户可以使用crontab命令创建任务。

需要注意:

1)建议定义cron任务时所用到命令使用绝对路径或自定义一个拥有完整路径的环境变量。

2)cron任务的运行结果的标准输出和错误都是以邮件的形式通知给相关用户如果不想以邮件的形式通知用户则可以使用重定向的方式输出给/dev/nullCOMMAND &> /dev/null。

3)对于cron任务来讲%有特殊用途如果在命令中要使用%则需要转义不过如果将%放置与单引号中也可以不用转义。

练习

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

#先创建/logs目录
]# mkdir /logs
#使用crontab -e创建任务
]# crontab -e
0 0 * * 2,4,7 /bin/cp /var/log/messages /logs/messages-$(date +\%Y\%m\%d) &> /dev/null

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

]# crontab -e
0 */2 * * * /bin/grep "^[SM]" /proc/meminfo >> /tem/meminfo.txt

原创文章,作者:苦涩咖啡,如若转载,请注明出处:http://www.178linux.com/45373

(0)
苦涩咖啡苦涩咖啡
上一篇 2016-09-11 09:29
下一篇 2016-09-11 14:56

相关推荐

  • linux路由转发(软路由)实验

        一。实验网络拓扑             (R1,R2由 Linux 虚拟机添加双网卡做软路由实现)              &n…

    Linux干货 2016-09-05
  • 0803课堂练习与作业

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? 不能添加在/testdir中增删改文件或目录 2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 不能查看文件中的文件列表 3、当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除? 不…

    Linux干货 2016-08-04
  • centos6启动故障及修复

    前言 前文中我们熟悉了linux的启动流程,如果在启动过程中文件丢失或者损坏了怎么办呢?难道只有重装系统这一条路吗?那我们不是成了普通网管了吗?作为专业的运维工程师,我们需要掌握如何快速修复系统启动。 实验1: 破坏/boot/grup/下的文件——-stage2 阶段  不影响启动  mv /boot/grub …

    2017-09-03
  • 用户,管理,权限

    主要是介绍一些 关于创建用户 ,更改用户信息及密码 ,还有权限管理等等。可能介绍的不全还请大佬们多多关照新人!

    Linux干货 2017-11-24
  • Linux运维实战之5:磁盘分区、格式化

    在网络系统中,磁盘和文件系统管理是两个非常基本、同时也是非常重要的管理任务,特别是文件系统管理,因为它与用户权限和整个网络系统的安全息息相关。本次博文的主题是关于Linux系统中磁盘分区、格式化及挂载,下次博文我们再详细讨论文件系统管理。 在操作系统中,磁盘管理属于设备管理的范畴。一块硬盘安装到主机之后称为裸设备,若要能够在Linux系统中使用必须对其进行如…

    Linux干货 2016-11-26
  • LVS模型练习

    本次涉及到的练习:nat练习、dr练习、FWM机制练习、mysql集群练习、httpd的集群练习、httpd和mysql结合调度的练习 yum install ipvsadm nat练习     设置:     (1)centos7.2作为lvs调度,有两块网卡,(公网地址)其中…

    Linux干货 2016-10-30