说起计划任务,相信大家都应该听过,其实就是给我的计算机设置定时任务,指定时间内去执行相应的操作。

熟悉windows的朋友都知道,windows下有一项系统功能叫计划任务程序,我们可以通过界面设定在Windows环境下的计划任务。

    今天我们不谈Windows,重点在Linux服务器上。Windows和Linux在应用过程中最大的区别,在于Windows是更加贴近于用户的,而Linux主要负责管理服务器的工作。相对来说,Linux对计划任务的要求应该更为多一些。

例如,我们需要每分钟执行一次程序,检查系统运行状态,每星期要进行日志备份,每月要进行数据库的备份。诸如此类大量频繁的任务依靠人来做确实不太现实。

如何在Linux中使用计划任务呢?这里就要用到Linux下的工具Crontab。

首先这里我们需要记住两个概念:周期性执行的任务我们称为CronJob,周期性执行的任务列表我们称为Crontable

环境:VMware10,Linux版本型号CentOS6.5。远程工具 X_Shell5


首先,安装并检查Crontab工具

安装:

- yum install vixie-cron
- yum install crontabs

检查:

- crontab -l           #检查Crontab工具是否安装
- service crond status   #检查crond服务是否启动
- service crond        #查询crond服务可以使用的命令

在一些版本的Linux中,Crontab工具是默认安装的(当然,这与你安装Linux时选择哪种安装也是有关系的,最小系统安装默认不会安装该工具),如果没有的话,搭建yum源本地安装即可。

接下来,这里我们先给一个小案例。

案例一:  

每分钟都打印当前时间到一个日志文件中

*********date >> /tmp/log.txt

- crontab  -e          #打开计划任务

#写入

*/1 * * * * date >> /tmp/log.txt

#  保存退出

- crontab -l            #打印计划任务

- tail -f /tmp/log.txt     #动态刷新log.txt文件的最后一行

上面的案例给出的是最简单的计划任务,每分钟将时间打印到/tmp/log.txt中。可以发现,Crontab工具使用起来并不是相当复杂。

接下来,我们聊一聊Crontab的基本组成。

Linux下一切皆文件。CROND 是一项系统服务,每分钟都会从配置文件刷新定时任务,并执行计划任务,它是以文件的形式设定定时任务。我们上面使用到的Crontab工具,是用来对定时任务进行调整。

关于它的配置文件,也就是我们上面案例中写到的【*/1 * * * * date >> /tmp/log.txt】,有着一定的格式要求。

我们再给出几组例子,帮助理解格式

* 每天10:30重启apache服务

30 10 * * * service httpd restart

* 每月1、10、22日4:45重启apache

45 4 1,10,22 * * service httpd restart

* 每月1到10日4:45重启apache

45 4 1-10 * * service httpd restart

* 每隔两分钟重启apache服务

*/2 * * * * service httpd restart

* 每奇数分钟重启apache服务

1-59/2 * * * * service httpd restart

* 晚上11点到早上7点之间,每隔一小时重启apache

0 23-7/1 * * * service httpd restart

* 每天18点到23点之间每隔30分钟重启apache

0-59/30 18-23 * * * service httpd restart
0,30 18-23 * * * service httpd restart

有特别注意:

1、Crontab共有秒,分钟,小时,天,月,星期 五个域,出第三域和第五域之间执行的是“或”操作,其余都执行的是“与”操作。

2、命令行双引号中使用%时,需要加反斜线 \

案例二:

计划任务:四月的第一个星期天早晨1时59分运行a.sh

错误命令:

59 1 1-7 4 0 /root/a.sh

执行结果:四月的1-7号和四月的每个周天的1:59都执行该命令

修    正:

59 1 1-7 4 * test `date +\%w` -eq 0 && /root/a.sh

关于Crontab工具的使用,我们只需要掌握一条命令加四个选项就足够。

[root@localhost ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage:crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)-e  (edit user's crontab)-l    (list user's crontab)-r    (delete user's crontab)-i    (prompt before deleting user's crontab)-s    (selinux context)

-u:指定计划任务分配的用户,默认是当前登录用户

-e:编辑计划任务

-l:列出用户的计划任务

-r:删除用户的计划任务

细心的话可以注意到这里有-u选项,表明我们可以指定计划任务的所有者。

    案例三: 

多用户同时设定定时任务

这就是Crontab工具的一些基本功能,关于Crontab,还有很重要的一点,它的配置文件。

在 /etc 目录下:

[root@localhost ~]# cd /etc
[root@localhost etc]# ls cron*
cron.deny  crontabcron.d:
0hourly  raid-check  sysstatcron.daily:
cups  logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatchcron.hourly:
0anacroncron.monthly:
readahead-monthly.croncron.weekly:

-1>打开文件 crontab<这是Crontab的全局配置文件>

在该全局的配置文件中也可以添加新的系统级别的计划任务。(需要指定用户)

- */1 * * * * root echo “root->cron/crontab”

MAILTO表示的是计划任务改变之后生成日志的发送对象。

-2>进入配置文件cron.d

- cd cron.d
- ls
- cat sysstat

crontab 在载入配置文件的过程中,会把sysstat文件中的配置信息载入成root用户的计划任务。

但crontab -e 修改内容,不会改变sysstat配置文件中的信息。直接修改sysstat配置文件中的信息,不会直接载入到crontab中,可以使用命令

crontab sysstat

将配置文件中的内容导入crontab中。这会覆盖原来crontab -e中的全部内容

-3>

/etc/cron.d/sysstat 文件中有注明的用户名,在目录 /etc/cron.d 下的所有文件,都可以认为是系统配置文件的补充。

也可以在该目录下自己创建文件,写相应的计划任务,同样需要注明用户。不需要载入,就可以执行该计划,而且该计划并没有放到 crontab -l -u user中。因此说明,crontab工具不可以编辑系统级别的计划任务。

-4>补充

crontab -e写入的定时任务,以及crontab -l列出的定时任务,保存在文件 /var/spool/mail/”user”文件中.不同用户对应不同的子文件夹

cat /var/spool/mail/root

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

Crontab到这里基本已经结束了,这里还有最后一个问题。

Crontab最小只能设置到每分钟执行一次命令,如果想半分钟执行某个命令怎么做的?

Linux下有条系统命令 sleep,可以让程序停止一段时间,如何通过这条系统命令实现小于一分钟的定时任务呢?

案例四:

计划任务:每半分钟执行一次 将date打印到/tmp/date.log

执行命令:

*/1 * * * * date >> /tmp/date.log
*/1 * * * * sleep 30s;date >> /tmp/date.log

-------muhuizz整理

转载于:https://blog.51cto.com/muhuizz/1868839

Linux计划任务之_Crontab相关推荐

  1. linux的周期计划任务叫atd,linux计划任务

    一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...

  2. linux计划任务执行bin文件,Linux任务计划和周期性任务执行

    linux计划任务有两类 at:未来某个时间点仅执行一次任务就结束的指令,at指令执行时必须要有atd这个服务支持. crontab:可以以时间单位为分钟,小时,每天,每周,每月,每年等循环执行某任务 ...

  3. linux的任务计划6,Linux计划任务

    Linux计划任务: 未来的某个时间执行一次任务,或者周期性执行某个任务,执行结果会通过邮件通知 定时任务:at batch 周期性任务:crontab 系统任务调度:/ect/crontab 用户任 ...

  4. 云计算实战系列十三(Linux计划任务)

    Linux计划任务 知识点: · 循环调度执行 cron 用户级 · 企业应用项目实战(cron) · /etc/crontab · 日志的重要性 · rsyslog 日志管理 · logrotate ...

  5. linux计划任务一小时,linux,计划任务,每小时执行一次(共7篇).docx

    linux,计划任务,每小时执行一次(共7篇) Linux下的计划任务命令小结 在UNIX下怎样实现和Windows下"计划任务"一样的功能 $crontab-e编辑脚本 $cro ...

  6. Linux计划任务-定时任务

    Linux计划任务-定时任务 at单次计划任务 at命令格式 查看at任务 取消at计划任务 创建1分钟后的单次任务 定时任务分类 cron`系统任务调度` /etc/crontab文件格式 用户任务 ...

  7. Linux计划任务要怎么弄?

    Linux计划任务是指在Linux系统中自动执行某些命令或程序的功能.Linux计划任务通常是被以下类型的人所需要的: 系统管理员:他们可以使用计划任务定期执行系统维护任务,例如备份数据.清理日志文件 ...

  8. Linux计划任务、周期性任务执行

    Linux计划任务 邮件服务 本地电子邮件服务 maill命令 邮件正文 实例 at命令 参数 TIME格式 实例 cron计划任务 任务分类 系统cron任务 系统crontab配置格式 用户cro ...

  9. win10 / linux计划任务

    不论是windows还是linux,都可以通过系统自带的计划任务工具配置自动运行程序,协助我们更好地管理工具.下面简单介绍一下window和linux计划任务的配置. win10计划任务: 1.写好需 ...

最新文章

  1. python turtle画气球-micro:bit + LoRa 实现气球追踪
  2. bash编程练习题及答案
  3. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
  4. windows下用pycharm安装tensorflow简易教程
  5. 解决Office系列安装不上的办法
  6. 别用symbolicatecrash来解析crash Log了
  7. php表示昨天_php输出各种时间代码表示
  8. 开源:秋式广告杀手源码
  9. java class教程_深入理解Java Class文件格式(七)
  10. Ruby在windows下配置所遇到的问题
  11. Python pip install修改默认下载路径
  12. win7下安装VC6LineNumberAddin方法[VC6行号插件]
  13. 控制系统|反馈系统的稳定性分析
  14. 将CNKI的caj格式下载成为pdf
  15. 管理变量、机密和事实
  16. 怎么将自己的头像p到特定的背景图_怎么把自己的头像和背景分离出来:用ps抠图...
  17. 计算机慢的解决方法,几种电脑变慢的解决方法
  18. freescale R10 ipu lib 分析 - ipu_device.c
  19. 汇编:JMP指令原理
  20. Ubuntu18.04 安装Proverif 和Syther_tool

热门文章

  1. MYSQL基本知识:TRUNCATE和DELETE的区别
  2. word里面用mathtype编辑公式转成PDF后出现乱码
  3. 测试员,你该如何面对自己30岁后的下坡路?
  4. android长按非控件处,Android常用之Butterknife使用详解
  5. python运维案例开发_python运维开发之第六天
  6. 西门子ug通用后处理_五轴UG(NX)后处理
  7. 七年前的电脑可以用python_1年前的小五都用 Python 来做什么?
  8. 服务器日志监控系统怎么解决,服务器日志监控系统
  9. 矩阵特征值的一些特点
  10. pytorch ResNet结构代码实现