本文介绍在Linux下的两种定时执行任务的方式:at命令,以及crontab服务。
(1)at命令
如果我们只是想要让特定任务运行一次,这么linux at 定时执行,这时侯就要用到at监控程序了。
设置at命令很简单,指示定运行的时间,这么都会在那个时侯运行。at类似复印进程,会把任务放在/var/spool/at目录中学linux有前途吗,到指定时间运行它。at命令相当于另一个shell,运行attime命令时,它发送一个个命令,可以输入任意命令或则程序。atnow+time命令可以在指示任务。
假定处理一个小型数据库,要在他人不用系统时去处理数据,例如下午3点10分。这么我们就应当先构建/home/kyle/do_job脚本管理数据库,计划处理/home/kyle/do_job文件中的结果。正常方法是这样启动下述命令:
# at 2:05 tomorrow at>/home/kyle/do_job at> Ctrl+D
ATTime中的时间表示方式
----------------------------------------------------------------------- 时 间 例子 说明 ----------------------------------------------------------------------- Minuteat now + 5 minutes任务在5分钟后运行 Hour at now + 1 hour 任务在1小时后运行 Days at now + 3 days 任务在3天后运行 Weeks at now + 2 weeks 任务在两周后运行 Fixed at midnight 任务在午夜运行 Fixed at 10:30pm任务在晚上10点30分
注意:一定要检测一下atq的服务是否启动,有些操作系统未必是默认启动的,linux默认为不启动,而ubuntu默认为启动的。检测是否启动,用serviceatd检测句型,用serviceatdstatus检测atd的状态linux服务器配置与管理,用serviceatdstart启动atd服务。
查看at执行的具体内容:通常坐落/var/spool/at目录下边,用vi打开,在最后一部份就是你的执行程序
(2)crontab
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。因为Cron是Linux的外置服务,但它不手动上去,可以用以下的方式启动、关闭这个服务:
/sbin/service crond start//启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload//重新载入配置 /sbin/service crond status//查看服务状态
你也可以将这个服务在系统启动的时侯手动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
如今Cron这个服务早已在进程上面了,我们就可以用这个服务了,Cron服务提供以下几种插口供你们使用:
1、直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除某个用户的cron服务 crontab -e //编辑某个用户的cron服务
例如说root查看自己的cron设置:crontab-uroot-l
再比如linux at 定时执行,root想删掉fred的cron设置:crontab-ufred-r
基本格式:
*****command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令
crontab文件的一些事例:
#每晚的21:30重启apache。 30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date #1月份日早上4点 0 4 1 jan * date