• 简介

    在linux下,crond服务是实现周期性计划任务的工具之一,crond服务能在规定的时间去执行设置的命令、脚本,功能类似windows下的“计划任务”。对一个多用户多任务的linux系统中,每个用户都可以设置自己的crontab,并且在/var/spool/cron/这个目录下会创建一个与创建计划任务用户同名的档案,档案的内容就是此用户使用“crontab -e”命令制作的计划任务。而每一次计划任务的执行,crond都会把执行的日志记录到/var/log/cron这个日志档案中,通过这个档案就会知道在某个时间,crond程序执行了哪个指令。作为系统管理员可以限定crontab的使用者,/etc/cron.allow与/etc/cron.deny这两个档案就是来做权限的设定的,一般只保留一个档案即可,假如只保留/etc/cron.deny这个档案,档案中的内容是一行一个用户的用户名,表示在这个档案的用户不能使用计划任务的功能,而没有在这个档案内的其他用户则可以使用计划任务的功能。

  • 命令格式

在制定计划任务时,我们使用crontab这个工具来设定,crontab的常用选项是“-e”与“-l”。

-e:edit,表示编辑计划任务列表

-l:list,表示列出计划任务列表

[root@zhaochj ~]# crontab -e

计划任务的设置会涉及到两个要素:一是时间;二是指令。也就是在什么时间会执行什么样的指令。

cron的语法格式:五个时间字段,一个指令字段

分 时 日 月 周     指令

时间的取值范围:

field          allowed values

-----          --------------

minute         0-59

hour           0-23

day of month   1-31

month          1-12 (or names, see below)

day of week    0-7 (0 or 7 is Sun, or use names)

在这五个时间字段时可以使用一些特殊的符号:

* :表示任何时刻

,:表示时间分割,比如在“分”这个字段里的值为“1,15”表示第一分,第15分两个时刻

- :表示一个时间段,如在“时”这个字段里的值为“2-5”表示零晨2点到零晨5点这个时间范围内

/n:n表示一个整数,如在“日”这个字段里的值为“*/1”表示每隔一天执行一次命令

  • 时间段的一些示例

    43 21 * * *              21:43 执行

    15 05 * * *              05:15 执行

    0 17 * * *               17:00 执行

    0 17 * * 1               每周一的 17:00 执行

    0,10 17 * * 0,2,3        每周日,周二,周三的 17:00和 17:10 执行

    0-10 17 1 * *            毎月1日从 17:00到17:10 毎隔1分钟 执行

    0 0 1,15 * 1             毎月1日和 15日和周一的 0:00 执行

    42 4 1 * *             毎月1日的 4:42分 执行

    0 21 * * 1-6           周一到周六 21:00 执行

    0,10,20,30,40,50 * * * * 每隔10分 执行

    */10 * * * *        每隔10分 执行

    * 1 * * *         从1:0到1:59 每隔1分钟 执行

    0 1 * * *                 零晨1:00 执行

    0 */1 * * *        毎时0分 每隔1小时 执行

    0 * * * *         毎时0分 每隔1小时 执行

    2 8-20/3 * * *            8:02,11:02,14:02,17:02,20:02 执行

    30 5 1,15 * *             每月1日 和 15日的 5:30 执行

  • 一个备份脚本与cron结合达到自动备份的实例

备份脚本如下:

[root@zhaochj ~]# vim autoback.sh
#!/bin/sh
#
#author: Jack.zhao
#Date: 2013-11-29
#Email: 419775240@qq.com
#Description: This script backup file
DATE=$(/bin/date +%Y%m%d)
BASENAME=$(basename $1)
[ -d /backup ] || /bin/mkdir /backup
/bin/tar -czf /backup/$BASENAME.$DATE.tar.gz $1 1> /dev/null 2>> /backup/$BASENAME.error.log
if [ $? -eq 0 ]thenecho "$1 $DATE backup successfully" >> /backup/$BASENAME.success.logelseecho "ERROR:failure $1 $DATE backup!" >> /backup/$BASENAME.error.log
fi
[root@zhaochj ~]# chmod +x /root/autoback.sh

此脚本的使用方法:

[root@zhaochj ~]# ./autoback.sh /etc/fstabefsg

脚本准备好了,那来设置计划任务,如果我们想对/home目录做一个自动备份工作,要求是每个月的1号、15号的零晨3点15分做备份工作:

[root@zhaochj ~]# crontab -e
15 3 1,15 * *    /root/autoback.sh /home

转载于:https://blog.51cto.com/zhaochj/1333747

linux之循环执行任务相关推荐

  1. shell脚本循环执行一个linux命令,Linux中循环执行shell命令的方法

    Linux命令行,循环执行shell命令 死循环 命令格式while true ;do ; done; 可以将 command 替换为任意命令. 下面以echo "hello"; ...

  2. linux程序循环执行,Linux之循环执行任务

    简介 在Linux下,crond服务是实现周期性计划任务的工具之一,crond服务能在规定的时间去执行设置的命令.脚本,功能类似windows下的"计划任务".对一个多用户多任务的 ...

  3. linux怎么循环执行命令,linux命令:for循环

    for循环: 进行循环操作,for循环语句 1.命令格式: 第一种格式: for变量 in 列表; do 循环体 done Usage: for I in {1..100}; do let SUM+= ...

  4. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项

    原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...

  5. linux分时间段循环执行脚本

    linux分时间段循环执行某脚本 解决方法: 假如我要把2017-01-01到2018-01-01时间段按6个月拆开执行脚本可以参考这个完整的sh脚本:http://www.yayihouse.com ...

  6. Linux学习笔记39——任务调度:什么是例行性工作调度、仅执行一次的工作调度、循环执行的例行性工作调度、可唤醒停机期间的工作任务

    一.什么是例行性工作调度 1,Linux 工作调度的种类: at, cron 2,CentOS Linux 系统上常见的例行性工作 二,仅执行一次的工作调度 1,atd 的启动与 at 运行的方式 a ...

  7. Linux上使用at单一执行例行性工作,使用crontab循环执行例行性任务以及系统例行任务

    在工作或学习中,我们经常需要对重要的文件进行备份,或者做一些日常性的排查等工作,了解如何在linux上执行例行性工作显得尤为重要! 本文基于Linux上CentOS 7版本进行演示 一.单一执行例行性 ...

  8. linux关机时循环输出脚本,Linux关机时执行指定脚本功能实现

    1.关机时执行某个脚本的具体思路 (1)在文件夹/etc/init.d/下创建关机时需要执行的脚本file_name: (2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文 ...

  9. 执行远程linux命令,linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

最新文章

  1. BCH升级在即,半路杀出个“中本聪”
  2. 软件工程作业2.1:阐述对软件工程的理解,学完这门课自己能学到什么,学完后能做什么...
  3. linux上使用git把代码push到gitee上
  4. 分布式mysql保持数据一致性_一种分布式跨数据库保持事务一致性的方法及系统与流程...
  5. C:简单的学生信息处理程序实现
  6. 如何在Windows 7、8、10,Vista或XP中删除Windows服务
  7. 华为 MateBook 14 Linux 版真机:搭载深度 Linux 系统
  8. jupyter notebook 安装教程
  9. 一体机硬盘被格式化了的资料恢复法子
  10. sklearn kfold_sklearn函数:cross_val_score(交叉验证评分)
  11. Vensim学习之Random Normal函数的使用
  12. CameraLink简介
  13. java 树什么意思是什么意思是什么意思_什么是红黑树?看完这篇你就明白了!...
  14. 国自然标书,600多份成功申请基金的标书 可下载
  15. pandas_day08
  16. tensorflow conv2d()参数解析
  17. IT30:30岁IT男未来10年规划第3篇(2009-2020)
  18. 基于安卓的电子书阅读器
  19. 到底怎么买保险?附保险配置实战
  20. Matlab矩阵乘法

热门文章

  1. 【GitHub】github相关问题和解决办法
  2. 蓝桥杯java 算法训练 区间K大数查询
  3. Hadoop学习笔记—1.基本介绍与环境配置
  4. JS中全局对象的属性和方法
  5. struts-dojo的使用
  6. 在Emacs中使用ECB(转载)
  7. 《Linux下sed命令的使用》
  8. 传雅虎有意收购Hulu 竞争者达6家
  9. 干货 | B端产品如何设计权限系统?
  10. 商业新知产品总监王宇:创业公司不要太看重「增长黑客」运营理念