一、cron
cron是一个linux下的定时执行工具(相当于windows下的scheduled task),可以在无需人工干预的情况下定时地运行任务task。由于cron 是Linux的service(deamon),可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在cron这个服务已经在进程里面了,我们就可以用这个服务了。
二、crontab
crontab位于/usr/bin/crontab。
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的任务计划,一般root用户在执行这个命令的时候需要此参数,不加-u选项则为当前用户;
crontab -l //列出、查看某个用户任务计划的详细内容
crontab -r //删除某个用户的任务计划
crontab -e //编辑某个用户的任务计划
crontab -e

查看执行结果:cat 执行结果文件(这里需要替换为你自己的执行结果文件的地址),从截图中可看出打印结果为ok,见下图
cat /home/autotest/cron.log
![]()
使用crontab -e 来制定计划任务,上面的例子表示在每月每日每分都执行’ echo "ok" >/home/autotest/cron.log’这样的任务。
Cron的格式是这样的,每一行代表一个任务计划,总共分成两部分,前面部分为时间,后面部分要执行的命令。后面的命令不用多讲,至于前面的时间是有讲究的,这个时间共分为5段,用空格隔开(可以是多个空格),第一段表示分钟(0-59),第二段表示小时(0-23),第三段表示日(1-31),第四段表示月(1-12),第五段表示周(0-7,0或者7都可以表示为周日)。从左至右依次是:分,时,日,月,周(一定要牢记)!
crontab -e 实际上是打开了/var/spool/cron/username (如果是root则打开的是/var/spool/cron/root)这个文件。使用的是vim编辑器,所以要保存的话则在命令模式下输入:wq即可。但是,你千万不要直接去编辑那个文件,因为可能会出错,所以一定要使用crontab -e来编辑。
查看已经设定的任务计划使用crontab -l,见下图
crontab -l
![]()
删除任务计划要用crontab -r,见下图
crontab -r
![]()
下面给出一些练习题,帮助你熟悉这个cron的应用。
1. 每天凌晨1点20分清除/var/log/slow.log这个文件;
2. 每周日3点执行’/bin/sh /usr/local/sbin/backup.sh’;
3. 每月14号4点10分执行’/bin/sh /usr/local/sbin/backup_month.sh’;
4. 每隔8小时执行’ntpdate time.windows.com’;
5. 每天的1点,12点,18点执行’/bin/sh /usr/local/sbin/test.sh’;
6. 每天的9点到18点执行’/bin/sh /usr/local/sbin/test2.sh’;
答案:
1. 20 1 * * * echo “”>/var/log/slow.log
2. 0 30 * * 0 /bin/sh /usr/local/sbin/backup.sh
3. 10 04 14 * * /bin/sh /usr/local/sbin/backup_month.sh
4. 0 */8 * * * ntpdate time.windows.com
5. 0 1,12,18 * * /bin/sh /usr/local/sbin/test.sh
6. 0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh
Cron的这部分内容并不难,你只要会了这6道练习题,你就算掌握它了。这里要简单说一下,每隔8小时,就是用全部小时(0-23)去除以8,你仔细想一下结果,其实算出来应该是0,8,16三个数。当遇到多个数(分钟、小时、月、周)例如第5题,则需要用逗号隔开。而时间段是可以用’-‘的方式表示的。等设置好了所有的计划任务后需要查看一下crond服务是否启动,如果没有启动,需要启动它。
查看crond服务是否启动:
service crond status
![]()
running表示已启动,任务可正常执行。任务写完后最好自己测试一下。如服务未启动,文章第一部分已经提供了相关命令。
944

被折叠的 条评论
为什么被折叠?



