当前位置: 首页 > 科技观察

在Ubuntu14.04中使用cron自动执行作业

时间:2023-03-16 13:30:09 科技观察

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服务重新启动,它将立即执行。