Linux指令之crontab
Posted tubewang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux指令之crontab相关的知识,希望对你有一定的参考价值。
一、计划任务
在Linux中有一个“计划任务”的概念,它是指:让计算机在指定的时间执行指定的事情。
计划任务在Linux的体现主要分为at和crontab。
其中:
at:通过at命令安排任务在某一时刻执行一次,用于调度临时性的一次性的任务;
crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或shellscript脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
补充:
1 安装crond服务:[root@mycentos7^ ]#yum -y install crontabs 2 检查crontab服务: [root@mycentos7^ ]#systemctl status crond 3 设置开机启动: [root@mycentos7^ ]# systemctl enable crond
二、crontab服务管理
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:
-u user:用来设定某个用户的crontab服务, 例如,“-u aliba”表示设定aliba用户的crontab服务, 此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容, 如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件, 如果不指定用户,则默认删除当前用户crontab文件。
-i:在删除用户的crontab文件时给确认提示。
必须掌握:
crontab -l [-u user] ##列出用户目前的crontab.
crontab -e [-u user] ##编辑用户目前的crontab.
补充:通过crontab添加的计划任务都会存储在/var/spool/cron/目录里。
三、crontab配置详解
通过查看配置文件可得知crontab的详细配置信息: cat /etc/crontab
基本格式:
* * * * * command
分 时 日 月 周 命令
第1列表示分钟0~59,每分钟用 * 或者 */1 表示;
第2列表示小时0~23 (0表示0点) ,以此类比7-9表示: 8点到10点之间;
第3列表示日期1~31;
第4列表示月份1~12;
第5列标识号星期0~6 (0或者7表示星期天),或写成英文的形式:sun, mon, tue, wed, thu, fri, sat;
第6列要运行的命令。
四、crontab案例
1、几组指令及其含义:
*/1 * * * * date >> /root/date.txt 表示每分钟执行一次date命令; 30 21 * * * system restart httpd 表示每晚的21:30重启apache; 45 4 1,10,22 * * system restart httpd 表示每月1、10、22日的4:45重启apache; 10 1 * * 6,0 system restart httpd 表示每周六、周日的1:10重启apache; 0,30 18-23 * * * system restart httpd 表示在每天18:00至23:00之间每隔30分钟重启httpd; * 23-7/1 * * * system restart httpd 晚上11点到早上7点之间,每隔一小时重启apache; 0 11 4 * mon-wed system restart httpd 每月的4号与每周一到周三的11点重启apache;
2、crontab常见错误:(CRON)No MTA installed, discarding output
出现该错误的原因:在执行某些命令时会有一些输出,但是它不知道输出到哪里去,就会报此错误。
解决:可以将输出重定向到文件等地方。
说明:日志可以在:/var/log/syslog中查看日志。
3、应用
在Linux服务器上通过指令crontab -l查看所有定时任务,通过指令crontab -e可以编辑定时任务。
模拟使用“crontab -e”编辑用户目前的crontab列表,并添加一条定时任务:
1 #模拟添加一条新定时任务:每晚1点执行指定某个脚本,日志指定具体某个位置 2 0 1 * * * /bin/bash /zero/www/project/bin/auto_recommend.sh >> /zero/logs/crontab_auto_recommend.log 2>&1 &
对应的super_recommend.sh内容如下:
1 javabin=‘/zero/www/project/test.jar‘ 2 3 jdk="java" 4 5 controller="autoRecommendController" 6 7 $jdk -jar $javabin $controller > /zero/logs/autoRecommend.run.log 2>&1 &
结果:发现会在每天凌晨1点定时执行这个Jar包,并做好相关日志记录。
以上是关于Linux指令之crontab的主要内容,如果未能解决你的问题,请参考以下文章