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
下一篇 2016-09-11

相关推荐

  • 马哥教育网络21期+第二周练习博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用文件管理类命令有cp、mv、rm。 # cp命令:文件复制命令     cp [OPTION]… [-T] SOURCE DEST 单文件复制     cp [OPTION]… SOURC…

    Linux干货 2016-07-26
  • ansible进阶(roles应用)

    ansible 进阶 一、roles简介 一个项目从开始到结束,不是简单几十个playbook就可以完事了,当文件数很多,有上百个的话,仅通过简单的includes不停的引用,那最终的结果错综复杂。这个时候ansible roles就可以很好的发挥它的作用了。 roles,字面意思是角色的含义,可以理解为有相互关联功能的集合。我们把安装ntp、mem、ngi…

    2017-01-05
  • 文件处理工具及正则表达式练习

    本节练习均在centos7系统下实现,部分练习只截取部分截图,另外排版的事情我已经放弃了! 1.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 注:^ 行首, . 匹配任意单个字符,* 匹配前面的字符任意次 突然发现前面解法错误,没有排除空格后加小括号的情况,下面是正确做法 2.统计last命令中…

    Linux干货 2017-07-29
  • 第二周作业

    第一、文件管理类命令     cp、mv、rm                  cp命令:copy 源文件;目标文件;     &nbsp…

    Linux干货 2016-12-12
  • shell编程——让你又爱又恨的东西

    变量类型:      不同的数据类型在系统中所占资源不同,并且表示的范围也不同      数值型:          短整型short:      &…

    Linux干货 2016-08-12
  • 练习

    练习 显示/proc/meminfo文件中以大小s开头的行;     显示/etc/passwd文件中不以/bin/bash结尾的行     找出/etc/passwd中的两位或三位数     显示/etc/grub2.cfg文件中,至少以一个空白字符开头的 且后面存非空白字符的行   &…

    Linux干货 2016-08-12