Cron是Linux系统中最有用的工具之一。cron作业是计划在指定时间到来时执行的作业。 最常见的自动化系统管理和自动维护任务,比如每日通知备份按计划完成,或者通知/tmp/目录按计划定时清理。还有许多Web应用程序也需要执行cron作业。 本文介绍了Cron的工作机制,您可以使用Cron来实现作业调度。Cron本身是一个后台运行的守护进程,通过配置文件“crontab”,根据时间调度指定作业的执行。 1.启动Cron服务 基本上所有的Linux发行版都默认预装了cron工具。即使cron没有预装,也很简单,执行命令手动安装:root@ubuntu-14:~#apt-getinstallcron 然后查看cron服务的状态,应该是运行在默认背景。如果没有启动,可以手动启动该服务。root@ubuntu-14:~#servicecronstartroot@ubuntu-14:~#servicecronstatuscronstart/running,process1027 2.使用cron帮助 如果cron正常,那么可以使用man命令查看详细使用情况在其手册中描述。root@ubuntu-14:~#mancrontab 以上命令是crontab手册中描述的用法。如果你想查看如何使用cron作业指定的信息,你可以这样做:root@ubuntu-14:~#man5crontab 要退出帮助命令手册的显示,请按q键或h钥匙 三。crontab命令的用法 下面介绍如何使用crontab命令实现定时任务。 1。列出Cron作业 使用以下命令列出当前用户计划的cron作业。root@ubuntu-14:~#crontab–l 将列出当前用户的所有cron作业。如果你想查看其他用户的cron任务,你可以使用以下命令:root@ubuntu-14:~#crontab–l–uusername 这将列出指定用户的cron任务。 2。编辑Cron作业 要添加新的cron作业,或编辑现有的cron作业,可以使用以下命令:root@ubuntu-14:~#crontab-e 3.要删除cron作业 使用以下命令来删除已安排的cron作业。root@ubuntu-14:~#crontab–r 使用以下命令删除所有计划的cron作业,无需重新确认。root@ubuntu-14:~#crontab–ir 4、命令参数 -uuser:用于设置某个用户的crontab服务; file:file是命令文件的名称,表示该文件作为crontab的任务列表文件加载到crontab中。如果这个文件没有在命令行上指定,crontab命令将接受在标准输入(键盘)上键入的命令并将它们加载到crontab中。 -e:编辑用户的crontab文件的内容。如果没有指定用户,则表示编辑当前用户的crontab文件。 -l:显示用户的crontab文件的内容。如果没有指定用户,则表示显示当前用户的crontab文件的内容。 -r:从/var/spool/cron目录中删除用户的crontab文件。如果不指定用户,则默认删除当前用户的crontab文件。 -i:删除用户的crontab文件时给出确认提示。#p# 四、使用crontab来计划任务 除了通过配置文件来处理定时的cron作业外,还有其他的方式。如果查看/etc目录,您会发现这样的目录:cron.daily、cron.hourly、cron.monthly等等。因此,将cron脚本放到这些目录中,系统会根据这些目录名定时执行这些作业脚本。 1。Cron配置类型 Cron有两种用于调度自动化任务的配置文件类型。 (一)系统级Crontab 这些cron作业被系统服务和关键作业使用,需要root级权限才能执行。可以在/etc/crontab文件中查看系统级cron作业。 (2)用户级Crontab 用户级cron作业对于每个用户都是独立的。因此,每个用户都可以使用crontab命令来创建自己的cron作业,也可以使用以下命令来编辑或查看自己的cron作业。root@ubuntu-14:~#crontab–e 选择编辑器后,您可以配置新的cron作业。 5.使用Crontab调度作业 可以使用指定的语法来调度cron作业,而且还有速记缩写命令,让管理cron作业变得非常简单。 crontab语法如下:*****commandtobeexecuted------|||||||||||---预执行命令||||-----表示周0~7(星期日可用0或7表示)|||------表示月份1~12||--------表示日期1~31|-----------表示小时1~23(0表示0点)------------表示每分钟1~59分,用*或*/1表示 6.新的Cron作业配置示例 现在您已经熟悉了crontab命令、语法和cron作业的类型,您可以创建一些作业计划来进行测试。可以使用crontab-e命令添加。 1。每分钟运行一次的预定作业 下面的示例创建一个cron作业,它每分钟输出文本“测试cron作业每分钟执行一次”,并将该文本发送到user@vexxhost.com邮箱。 首先使用crontab命令编辑:root@ubuntu-14:~#crontab–e 编写如下脚本:SHELL=/bin/bashHOME=/MAILTO=”user@vexxhost.com”#Thisisacomment*****回声'testcronjobtoexecuteeveryminute':wq!保存并退出 保存此cron脚本文件后,您可以将其添加到计划的作业中。 2。在指定时间安排Cron作业 如果你想安排一个cron作业在“每周四晚上7:00”运行,那么crontab脚本应该是这样的:0019**4sh/root/test.sh 然后将其添加到计划的作业中。root@ubuntu-14:~#crontab-ecrontab:installingnewcrontab 上面脚本中的“0019”指的是晚上7点,“4”指的是星期四。 7。总结 可以看到,使用crontab自动执行任务是非常容易的,它可以按分钟、小时、周、月、周来执行任务。另外Linux还有一个at命令,适用于处理只执行一次的任务,需要先运行atd服务。 其次,注意环境变量的问题。有时候我们创建一个crontab,但是这个任务不能自动执行,但是手动执行这个任务是没有问题的。这种情况一般是crontab文件中没有配置环境变量造成的。在crontab文件中定义多个调度任务时,需要特别注意环境变量的设置,因为我们手动执行一个任务时,是在当前的shell环境下进行的。当然,程序可以找到环境变量,系统自动执行任务调度,此时不会加载环境变量。因此,需要在crontab文件中指定任务运行所需的所有环境变量。这样系统在执行任务调度的时候就没有问题了。 还要注意清理系统用户的邮件日志。每个任务被调度执行后,系统会将任务输出信息以邮件的形式发送给当前系统用户。这样一来,日志信息会随着时间的推移变得非常庞大,可能会影响系统的正常运行。因此,对每个任务进行重定向处理是非常重要的。 ***注意,新创建的cron作业不会立即执行,至少需要2分钟才能执行。如果cron服务重新启动,它将立即执行。
