简介

在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 ]

then

echo "$1 $DATE backup successfully" >> /backup/$BASENAME.success.log

else

echo "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

linux程序循环执行,Linux之循环执行任务相关推荐

  1. linux 程序占内存,linux概念之程序占用内存

    1.在linux下,查看一个运行中的程序,占用了多少内存,一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存 ...

  2. 单片机上运行linux程序代码,在Linux下烧录51单片机

    原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...

  3. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php (1). ps aux:html 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存.linux RSS列 ...

  4. 安卓跑linux程序_Android 运行 Linux 可执行程序

    /**************************************************************************** * Android 运行 Linux 可执行 ...

  5. linux程序无法启动,Linux无法启动解决方法[阮胜昌]

    2007-10-22 22:27 linux中修复GRUB 呵呵,最近2003系统老出问题,主要是防火墙导致很多聊天软件都用不了@|@哎,有时候甚至把MBR文件也弄没了没办法重新安装GRUB么???? ...

  6. linux程序不可抢占,Linux内核抢占机制(preempt)

    早期的Linux核心是不可抢占的.它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度.非自愿的强制性调度只能发生在 每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空 ...

  7. 后台运行linux程序,后台运行Linux程序的方法

    后台运行Linux程序,可以通过crontab设置,这种方法一般用来让一个程序定时运行,也可以通过./test &这样在程序末尾加上一个&使程序在后台运行. 编写代码,下面我将参考ht ...

  8. linux程序设计项目报告,Linux程序设计实验报告大作业

    Linux程序设计实验报告大作业 实 验 报 告 课程名称: LINUX程序设计 学 院: 计算机学院 专 业: 软件工程 班 级: 14-3 姓 名: 张正锟 学 号: 201401061038 2 ...

  9. linux程序接口实验,Linux程序接口实验:取进程标志及用户信息

    0.环境平台 操作系统平台: Linux leaf 4.4.0-75-generic #96-Ubuntu SMP Thu Apr 20 09:56:33 UTC 2017 x86_64 x86_64 ...

  10. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去. 以前都是windows+AXD调试.包括本人用的FL24 ...

最新文章

  1. Java集合(八) 迭代器Iterator、泛型、Map映射
  2. java 最少使用(lru)置换算法_「Redis源码分析」Redis中的LRU算法实现
  3. CKeditor4.7.3标准版图片上传及相关配置
  4. Gradle编译spring3.x报错找不到itextpdf4.2.2解决方案
  5. 微信小游戏开发指南(一)什么是微信小游戏
  6. OpenPose 参数说明
  7. linux 中文 文件名乱码,中文文件名乱码问题
  8. 随机矩阵理论_随机PWM可降低噪声并减少三相逆变器应用中的辐射
  9. VBA-EXCEL:控制WORD文件
  10. 聚合支付平台需要哪方面的技术?主要有哪些功能结构?
  11. java求圆和梯形_jsp与javabean例子 求三角形、圆、梯形面积
  12. [Mysql] GROUP BY分组
  13. ZZ,春晚零点报时出错揭密
  14. MAC地址 单播,组播,广播
  15. Benchmark 第一篇 了解Benchmark
  16. Excel表格防止重复录入数据
  17. java知识串讲_java基础之Java知识串讲
  18. CPLEX for MAC 安装教程
  19. 51单片机毕业设计选题方向
  20. idea全局护眼色绿豆沙

热门文章

  1. xutil3网络框架
  2. 服务器安装lnmp的时候出现client_loop: send disconnect: Connection reset by peer
  3. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数
  4. c语言学习-编写递归函数用于计算n!
  5. 在URP中使用UICamera
  6. OpenShift 4 之Istio-Tutorial (10) 访问白名单、黑名单
  7. (四)使用Jenkins工作流链接MLOps管道
  8. 在ASP.NET Identity 2.0中使用声明(Claims)实现用户组
  9. Microsoft SignalR Map Controller具有页面可见性API和事件模糊功能,可映射文档管理系统(DMS)中的用户交互
  10. 微软宣布加入 OpenJDK 项目