Linux操作系统定时调度系统Cron深入介绍_unix linux

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,本文档不讲cron实现原理,主要讲一下cron的具体使用及简单介绍。

新增调度任务
推荐使用crontab -e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cron文件),退出后重启crond进程,虽然官方文档描述为“crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。”,但我曾经遇到不重启无法运行任务的情况(也许因为某些系统crontab是读到内存中的,修改完/etc/crontab后并没有马上执行),可以使用如下方式重新启动cron服务或重新加载cron配置

复制代码 代码如下:

/etc/rc.d/init.d/crond   restart
service cron reload

同样,我们也可以直接修改/etc/crontab文件来新建任务,/etc/crontab文件内容默认如下:

复制代码 代码如下:

SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 
HOME=/ //使用者运行的路径,这里是根目录 
# run-parts 
01   *   *   *   *     root run-parts /etc/cron.hourly         //每小时执行/etc/cron.hourly内的脚本 
02   4   *   *   *     root run-parts /etc/cron.daily           //每天执行/etc/cron.daily内的脚本 
22   4   *   *   0     root run-parts /etc/cron.weekly       //每星期执行/etc/cron.weekly内的脚本 
42   4   1   *   *     root run-parts /etc/cron.monthly     //每月去执行/etc/cron.monthly内的脚本 

注意
• "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
• /etc/cron.hourly/,/etc/cron.daily/、cron.weekly/、/cron.monthly/   存放着系统预先制定的cron任务

/etc/crontab文件语法如下:

      Minute     Hour   Day    Month  Dayofweek      command
      分钟         小时     天        月         天每星期           命令

每个字段代表的含义如下:
• Minute             每个小时的第几分钟执行该任务
• Hour               每天的第几个小时执行该任务
• Day                 每月的第几天执行该任务
• Month             每年的第几个月执行该任务
• DayOfWeek     每周的第几天执行该任务
• Command       指定要执行的程序

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
同时,cron支持类似正则表达式的书写,支持如下几个特殊符号定义:

• "*"代表取值范围内的数字,
• "/"代表"每",
• "-"代表从某个数字到某个数字,
• ","分开几个离散的数字
举例如下:

复制代码 代码如下:

5       *       *           *     *     ls             指定每小时的第5分钟执行一次ls命令
30     5       *           *     *     ls             指定每天的 5:30 执行ls命令
30     7       8         *     *     ls             指定每月8号的7:30分执行ls命令
50   7       *             *     *     root     run-parts     /etc/cron.daily   每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[注:run-parts参数表示,执行后面目录中的所有可执行文件,如果单独执行某个脚本的话,是不需要增加run-parts参数的。]

服务管理

复制代码 代码如下:

service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置

命令选项
-u指定一个用户,
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
如:

复制代码 代码如下:

crontab -u //设定某个用户的cron服务
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务

任务分类
• 系统工作:系统周期性所要执行的工作,如备份系统数据、清理缓存,系统工作一般都定义在/etc/crontab文件中
• 个人工作:某个用户定期要做的工作,如清理3天前的文件

cron用户限制
我们可以对不同用户设置限制,比如允许user1使用cron服务,而user2不允许使用cron服务;可以通过编辑如下两个文件实现这个策略:
• /etc/cron.deny    被记录在此的用户不能使用cron任务
• /etc/cron.allow   被记录在此的用户可以使用cron任务
注意:如果两个文件都不存在,则默认所有用户均可以使用cron服务

其它:
• /var/spool/cron/   该目录下存放所有用户的cron服务
• /var/log/cron   记录cron运行的日志信息

时间: 2024-09-21 17:25:50

Linux操作系统定时调度系统Cron深入介绍_unix linux的相关文章

完美解决Linux操作系统下aes解密失败的问题_unix linux

现象描述:windows上加解密正常,linux上加密正常,解密时发生如下异常: 复制代码 代码如下: javax.crypto.BadPaddingException: Given final block not properly padded       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)       at com

介绍Linux操作系统下修改系统时间的方法

我们一般使用"date -s"命令来修改系统时间.比如将系统时间设定成2007年8月19日的命令如下. #date -s 08/19/2007 将系统时间设定成下午11点20分0秒的命令如下. #date -s 11:20:00 注意,这里说的是系统时间,是linux由操作系统维护的. 在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现.为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS.由于该同步

Linux操作系统web压力测试工具使用介绍

Linux操作系统在实际使用过程中,需要对操作系统进行web压力测试,通过测试我们可以知道服务器所承载的最大数据量,从而为我们进一步优化或是部署服务器做数据参考,哪么我们应该采用什么工具呢?今天风信网带大家来了解一下在Linux中常用的三种Web压力测试的工具使用. 三种工具分别是: linux webbench apache abjakarta-jmeter 下面我们将逐一进行讲解与说明各工作的使用方法,让大家能更好的掌握该技术! 如果你也有需要分享的经验,可以点击风信网链接传送门:http:

教你十种提高Linux系统安全性的招数_unix linux

Linux不论在功能上.价格上或性能上都有很多优点,然而,作为开放式操作系统,它不可避免地存在一些安全隐患.关于如何解决这些隐患,为应用提供一个安全的操作平台,本文会告诉你一些最基本.最常用,同时也是最有效的招数. Linux是一种类Unix的操作系统.从理论上讲,Unix本身的设计并没有什么重大的安全缺陷.多年来,绝大多数在Unix操作系统上发现的安全问题主要存在于个别程序中,所以大部分Unix厂商都声称有能力解决这些问题,提供安全的Unix操作系统.但Linux有些不同,因为它不属于某一家厂

linux服务器的攻防安全介绍_unix linux

随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案.  对Linux服务器攻击的定义是:攻击是一种旨在妨碍.损害.削弱.破坏Linux服务器安全的未授权行为.攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器.对Linux服务器攻击有许多种类,本文从攻击深度的角度说明,我们把攻击分为四级.  攻击级别一:服务拒绝攻击(DoS)  由于DoS攻击工具

Linux基础知识99问(一)_unix linux

1.什么是Linux? Linux是一个诞生于网络.成长于网络且成熟于网络的奇特的操作系统.1991年,芬兰大学生Linus Torvalds萌发了开发一个自由的UNIX操作系统的想法,当年,Linux就诞生了, 为了不让这个羽翼未丰的操作系统夭折,Linus将自已的作品Linux通过Internet发布.从此一大批知名的.不知名的电脑黑客.编程人员加入到开发过程中来,Linux逐渐成长起来. Linux一开始是要求所有的源码必须公开,并且任何人均不得从Linux交易中获利.然而这种纯粹的自由软

Linux 发行版和安装的基本知识_unix linux

一.Linux发行版的基本知识 虽然Linux的基础是其内核(kernel),但是光有内核还远不是一个完整可用的操作系统环境.这里我们要讲述一些关于Linux发行版的基本要素. Boot manager :boot manager是存在在硬盘主引导记录(aster boot record ,MBR)中的程序,该程序由计算机的BIOS调入执行,完成启动工作.如果你在一个已经安装了Windows或其它系统的机器上安装Linux,boot manager将让你选择启动哪个操作系统.boot manag

如何在Linux中使用flock控制程序的异步执行_unix linux

最近我常常需要同时ssh给若干台电脑做许多需要等待,而且可以同时进行的工作.例如: 1.让远端电脑同时更新套件 2.同时传送小档案给远端的电脑(时间大部分在ssh认证) 然而之后的动作又需要在确认上述工作完毕之后,才能继续进行. 过去我都是这样做: # 前面的工作 update_pkg_on_machine_1 update_pkg_on_machine_2 update_pkg_on_machine_3 # ... 后面的工作 这样虽然可以确保工作同时进行完毕,但是就是很慢- 另一种可能的方法

linux中uptime命令的用法详细解析_unix linux

系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系统在过去的1分钟.5分钟和15分钟内的平均负载. uptime命令用法十分简单:直接输入uptime即可.另外还有一个参数  -V ,是用来查询版本的. (注意是大写的字母v)[linux @ localhost]$ uptime –Vprocps version 3.2.7[linux @ loc