Linux指令之crontab

Posted tubewang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux指令之crontab相关的知识,希望对你有一定的参考价值。

一、计划任务

Linux中有一个“计划任务”的概念,它是指:让计算机在指定的时间执行指定的事情。

计划任务在Linux的体现主要分为atcrontab

其中:

 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的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习日记之crontab使用notify-send实现每小时通知提醒

Linux 指令学习之crontab

linux之shell脚本与crontab定时器的运用

linux之shell脚本与crontab定时器的运用

linux之shell脚本与crontab定时器的运用

linux之shell脚本与crontab定时器的运用