Linux计划任务cron是一个定时模式,例如我们可以在系统使用最少时对系统进行备份,但是管理员不可能在半夜来到公司工作,那么就可以使用Linux计划任务cron,现在来介绍一下具体使用方法。
目前流行的Linux系统在安装好后cron都是安装好的并且是随机启动的
启动cron服务/sbin/service crond start
停止服务/sbin/service crond stop
重启服务/sbin/service crond restart
重新加载/sbin/service crond reload
服务的启动停止介绍完了下面来说如何添加计划任务
使用crontab命令
crontab -u设定某个用户的cron服务
crontab -l列出当前用户的cron服务的详细内容
crontab -r删除当前用户的cron服务
crontab -e编辑当前用户的cron服务
例如当前登陆的用户是root
运行crontab-e就给root用户创建一个计划任务
运行crontab -e进入vi编辑计划任务内容
第1位分钟表示(0-59)第2位表示小时(0-23)
第3位表示天(1-31)第4位表示月份(1-12)
第5位置表示星期(0-6)0表示星期日
后面是你要执行的任务
每一位之间使用空格分开
上面时间除了使用数字还有几个特殊符号
“*”表示所有数值如第一位使用*表示每分钟
“/”表示每如果第一位使用*/5表示每5分钟
“-”表示数值范围“,”来隔开离散的数值如第2位是1-6,8表示1点到6点,还有8点
具体实例如下
每天1点向某个文件写入一段话
0 1 * * * echo "helloworld">>/tmp/test.txt
每5分钟向执行一个程序或者命令
*/5 * * * * 执行的命令
如何知道您的计划任务是否运行了,1你可以去检查您要执行的命令是否在你指定的时间去运行了,2有的命令运行结果不好查看你可以去查cron的日志/var/log/cron
在此文件中记录了计划任务执行的情况
上述方法添加完成计划任务后会在/var/spool/cron目录中生成一个用户名字的文件,文件里面就是你的计划任务,cron服务每分钟读取一次/var/spool/cron中的文件
还有一种方法可以添加计划任务自己编辑/etc/crontab(cron服务每分钟也读取一次/etc/crontab文件)
在文件的末尾添加计划任务格式和上述方法完全一样
/etc/crontab里面还有其他的东西,下面来说下
MAILTO=root//如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
01 * * * * root run-parts /etc/cron.hourly 每个小时去执行一遍/etc/cron.hourly内的脚本
0 24 * * * rootrun-parts /etc/cron.daily 每天去执行一遍/etc/cron.daily内的脚本
2 24 * * 0 root run-parts /etc/cron.weekly 每星期去执行一遍/etc/cron.weekly内的脚本
4 24 1 * * root run-parts /etc/cron.monthly 每个月去执行一遍/etc/cron.monthly内的脚本
注意上面的run-parts参数如果去掉run-parts后面就要跟要执行的某个脚本名,如果加上run-parts参数后面就要跟目录名了
也可以限制cron的使用
如果在/etc/目录中存在cron.allowcron.deny文件
只有cron.allow文件中列出的用户才能使用cron服务,同时忽略cron.deny文件
如果cron.allow文件不存在,cron.deny文件中列出的用户将被禁止使用cron服务。
这样我们就完成了Linux计划任务cron的学习。
补充一些例子:
crontab文件的的些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周 6、周日的1 : 10重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00的间每隔30分钟重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例表示每星期 6的11 : 00 pm重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每的小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点的间的每隔的小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号和每周的到周 3的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
的月的号的4点重启apache