热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运维日记018--Linux下的cron定时任务管理

运维日记018–Linux下的cron定时任务管理当最小化安装RHEL6后,定时器服务crond已经安装并默认开启了。定时器crond这个服务使得系统可以安排定时任务。#chkc

运维日记018 – Linux下的cron定时任务管理

当最小化安装RHEL6后,定时器服务crond已经安装并默认开启了。定时器crond这个服务使得系统可以安排定时任务。

# chkconfig --list | grep crond
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

可以通过以下方式查看crond服务当前的运行状态:

# service crond status
crond (pid 1032) is running...

# pgrep crond
1032

# ps aux | grep crond
root 1032 0.0 0.1 117208 1372 ? Ss 10:37 0:00 crond
root 1243 0.0 0.1 103240 880 pts/0 S+ 16:17 0:00 grep crond

crontab命令

用户可以使用crontab命令设定或者查看定时任务。该命令的主要用法如下:

  • crontab -l [-u usrer]
    列出某个用户cron服务的详细内容

  • crontab -r [-u usrer]
    删除某个用户的cron服务

  • crontab -e [-u usrer]
    编辑某个用户的cron服务

例如,root用户想删除wjm用户的定时任务,可以如下操作:

# crontab -u wjm -r

当crontab使用-e参数时,会自动打开vi编辑器,可以按照规定语法格式编辑定时任务。其语法格式为:

Minute  Hour  Day  Month  Week  command
分钟 小时 天 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

例如,安排一个定时任务,每周一到周五的早上九点和下午五点向控制台发出一个提示信息“Work!”。可以这样实现:

0   9,17    * *   1-5     wall ‘Work!’

例如,安排一个定时任务,每天删除/home/wjm/log目录下五天前的文件:

0   2   *   *   *   find /home/wjm/log -type f -mtime +5 -exec rm {} \;

crontab的配置文件

cron有两个配置文件,一个是一个全局配置文件(/etc/crontab),是针对系统任务的;一组是crontab命令生成的配置文件(/var/spool/cron下的文件),是针对某个用户的,定时任务配置到任意一个中都可以。

我们打开/etc/crontab文件,它包括下面几行:

# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置 cron 任务运行环境的变量:

SHELL变量的值指定shell环境(此处默认为bash shell);PATH变量定义用来执行命令的程序路径;cron任务的输出被邮寄给MAILTO变量定义的用户名,如果MAILTO变量被定义为空白字符串(MAILTO=”“),电子邮件就不会被寄出;HOME变量可以用来设置在执行命令或脚本时使用的主目录。

后面四行则指定由run-parts命令定期执行cron.hourly、cron.daily、cron.weekly和cron.monthly目录下的脚本。系统管理员可以将一些系统级的定时任务放在上面指定的几个目录下,便可以定期执行。

文件/etc/crontab是针对系统级的定时任务的,而一般用户配置的定时任务时,还是推荐使用crontab -e命令来实现。当用户用crontab -e配置了定时任务后,会在/var/spool/cron目录下生成一个和用户名相同的文件,可以直接用文本编辑器打开这个文件,文件的内容和用crontab -l显示的内容是一样的。

cron守护进程每分钟都检查/etc/crontab文件、etc/cron.d/目录、以及/var/spool/cron目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个crontab文件改变后就不必重新启动守护进程了。

cron黑名单和白名单

可以通过编辑/etc/cron.allow和/etc/cron.deny文件,来允许/禁止用户设置定时任务。编辑完黑名单或者白名单后,需要重启crond服务以使之生效。

系统级定时任务

RHEL6安装好后,已经为用户配置好了一些系统级的定时任务,包含每小时、每天、每周、每月要执行的任务。

# ll -d cron*
drwxr-xr-x 2 root root 4096 16 2016 cron.d/
drwxr-xr-x 2 root root 4096 1021 08:01 cron.daily/
drwxr-xr-x 2 root root 4096 16 2016 cron.hourly/
drwxr-xr-x 2 root root 4096 16 2016 cron.monthly/
-rw-r--r-- 1 root root 722 29 2013 crontab
drwxr-xr-x 2 root root 4096 16 2016 cron.weekly/

我们在/etc目录下看到了cron.daily、cron.hourly、cron.monthly和cron.weekly几个目录,这些目录下都有一些可执行脚本,会定时的自动执行。当然,用户也可以把自己写的脚本放在对应的目录下,则该脚本也会定期自动的执行。

常见的几个每日执行的系统级定时任务

  • tmpwatch

这个任务可以定期清理特定目录(一般是/tmp或者/var/tmp)下的旧文件,避免这些目录不断膨胀。

习惯性的将一些临时文件放在tmp目录下,让其自然删除。同时,为了保证tmp目录不爆满,系统默认情况下每日会处理一次tmp目录文件,原理就是使用了tmpwatch。在系统最小安装情况下,这个功能是没有安装的。可以用以下命令安装:

# yum install tmpwatch

安装后会在/etc/cron.daily/目录下生成一个tmpwatch文件,这是一个可执行脚本,它的功能是删除/tmp和/var/tmp目录下一段时间内未被访问过的文件(/tmp下是10天,/var/tmp下是30天)。

  • logrotate

这个任务可以定期的回滚日志文件,避免日志文件变得过于大而使得读写效率下降。

  • logwatch

这是任务能定期将主机的log分析文件发送至指定的邮箱。

anacron

crontab可以指定任务在每天几点钟运行,可是如果那个指定时间机器没有开,那个任务便错过了时间而不再运行了。而anacron的意义就是处理非24小时一直开机的Linux系统的crontab执行。

anacron并不指定何时执行某项任务,而是启动后立刻去检测停机期间应该去执行而没有执行的crontab任务,并执行这些任务。


推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Linux ls只显示以.qcow2结尾的文件
    ls-al|grep-Eqcow2$ ... [详细]
author-avatar
苏绿儿520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有