linux 定时任务crond
1.定时任务crond
1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护进程执行。 为什么要使用crond定时任务: linux系统的定时任务crond,相当于我们平时生活中的闹钟的功能。可以满足周期性执行任务的需求。不同系统的定时任务和种类 windows 7 系统的定时任务: 开始→所有程序→附件→系统工具→选择任务计划程序
linux系统的定时任务: linux系统中定时任务调度的工作可以分为以下两个情况:
① linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等。
![](/assets/blank.gif)
![](/assets/blank.gif)
[root@wen cron]# ll /var/log/messages* -rw------- 1 root root 501112 Oct 19 19:39 /var/log/messages -rw-------. 1 root root 463457 Sep 27 04:18 /var/log/messages-20170927 -rw-------. 1 root root 927028 Oct 1 04:20 /var/log/messages-20171001 -rw------- 1 root root 1578109 Oct 8 15:32 /var/log/messages-20171008 -rw------- 1 root root 1672249 Oct 15 09:40 /var/log/messages-20171015 [root@wen cron]# ll /var/log/secure* -rw------- 1 root root 6406 Oct 19 15:06 /var/log/secure -rw-------. 1 root root 10927 Sep 27 04:08 /var/log/secure-20170927 -rw-------. 1 root root 11170 Oct 1 03:46 /var/log/secure-20171001 -rw------- 1 root root 15795 Oct 8 14:39 /var/log/secure-20171008 -rw------- 1 root root 22298 Oct 15 08:28 /var/log/secure-20171015 [root@wen cron]# cd /etc/logrotate.d [root@wen logrotate.d]# ls dracut ppp psacct syslog yum [root@wen logrotate.d]# cat syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler {sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript } 不要往下面文件放定时任务,不规范 [root@wen logrotate.d]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/# For details see man 4 crontabs# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed --- [root@wen logrotate.d]# ll /etc/|grep cron -rw-------. 1 root root 541 Mar 30 2015 anacrontab drwxr-xr-x. 2 root root 4096 Aug 30 05:53 cron.d drwxr-xr-x. 2 root root 4096 Aug 30 05:54 cron.daily -rw-------. 1 root root 0 Mar 30 2015 cron.deny drwxr-xr-x. 2 root root 4096 Aug 30 05:51 cron.hourly drwxr-xr-x. 2 root root 4096 Aug 30 05:53 cron.monthly drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly -rw-r--r--. 1 root root 457 Sep 27 2011 crontab
View Code
② 用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步,每天晚上0点备份站点数据及数据库数据,一般这些工作需要由每个用户自行设置才行。
[root@wen log]# crontab -l */5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1定时任务crond使用说明 crontab: invalid option -- '-' crontab: usage error: unrecognized option usage: crontab [-u user] filecrontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1002)-e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) -s (selinux context)
指令说明
通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)
使用者权限及定时任务文件
文件 |
说明 |
/etc/cron.deny |
该文件中所列用户不允许使用crontab命令。 |
/etc/cron.allow |
该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny |
/var/spool/cron |
所有用户crontab配置文件默认都存放在此目录,文件名以用户名命名。 |
指令选项说明表
参数 |
含义 |
指定示例 |
-l(字母) |
查看crontab文件内容 |
crontab -l |
-e |
编辑crontab文件内容 |
crontab -e |
-i |
删除crontab文件内容,删除前会提示确认 |
crontab -ri |
-r |
删除crontab文件内容 |
crontab -r |
-u user |
指定使用的用户执行任务 |
crontab -u lee -l |
提示:crontab{-l |-e}实际上就是在操作/var/spool/cron/当前用户这样的文件。
指令的使用格式
默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致。如:root用户的定时任务配置文件为/var/spool/cron/root。 crontab用户的定时任务一般分为6段(空格分隔,系统的定时任务则/etc/crontab分为7段),其中前五段位时间设定段,第六段为所要执行的命令或脚本任务段。crontab基本格式 * * * * * cmd提示: ① cmd为要执行的命令或脚本,例如/bin/sh /server/scripts/lee.sh. ② 每个段之间必须要有空格。
crontab语法格式中时间段的含义表
段 |
含义 |
取值范围 |
第一段 |
代表分钟 |
00-59 |
第二段 |
代表小时 |
00-23 |
第三段 |
代表日期 |
01-31 |
第四段 |
代表月份 |
01-12 |
第五段 |
代表星期 |
0-7(0和7都代表星期日) |
crontab语法格式中特殊符号的含义表
特殊符号 |
含义 |
* |
号表示任意时间都,就是"每"的意思,举例:如00 01 * * * cmd表示每月每周每日的凌晨1点执行cmd任务。 |
— |
表示分隔符,表示一个时间范围段,如17-19点,每小时的00分执行任务。00 17-19 * * * cmd。就是17,18,19点整点分别执行的意思。 |
, |
逗号,表示分隔时间段的意思。30 17,18,19 * * * cmd 表示每天17,18,19点的半点执行cmd。也可以和"-"结合使用,如: 30 3-5,17-19 * * * cmd。 |
/n |
n代表数字,即"每隔n单位时间",例如:每10分钟执行一次任务可以写 */10 * * * * cmd,其中 */10,*的范围是0-59,也可以写成0-59/10。 |
书写crond定时任务要领
1 为定时任务规则加必要的注释 加了注释,就知道定时任务运行的是什么作业,以防以后作业混乱。[root@wen data]# crontab -e ##first crontab */1 * * * * /bin/date >> /data/date.log2 定时任务命令或程序最好写到脚本里执行 [root@angelT ~]# crontab -l #backup www to /backup 00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&13 定时任务执行的脚本要规范路径,如:/server/scripts[root@angelT ~]# crontab -l #backup www to /backup 00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&14 执行shell脚本任务时前加/bin/sh执行定时任务时,如果是执行脚本,尽量在脚本前面带上/bin/sh命名,否则有可能因为忘了为脚本设定执行权限,从而无法完成任务。[root@angelT ~]# crontab -l #backup www to /backup 00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&15 定时任务结尾加 >/dev/null 2>&1[root@angelT ~]# crontab -l #backup www to /backup 00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&1
5.1 有关/dev/null的说明 /dev/null为特殊的字符设备文件,表示黑洞设备或空设备。[root@angelT ~]# ll /dev/null crw-rw-rw- 1 root root 1, 3 3月 26 01:10 /dev/nul5.2 有关重定向的说明>或1> 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。 >>或1>>追加重定向:把前面输出的东西追加到后边的文件中,不会删除文件原有内容。<或<0 输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。 <<或<<0输入重定向:后跟字符串,用来表示"输入结束",也可用ctrl+d来结束输入。2> 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。 2>> 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。标准输入(stdin):代码为0,使用<或<<。 标准输出(stdout):代码为1,使用>或>>。正常的输出。 标准错误输出(sederr):代码为2,使用2>或2>>。特殊: 2>&1就是把标准错误重定向到标准输出(>&)。 >/dev/null 2>&1 等价于 1>/dev/null 2>/dev/null 5.3 >/dev/null 2>&1的作用如果定时任务规范结尾不加 >/dev/null 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常(var/spool/clientmqueue邮件临时队列目录,垃圾文件存放于此,如果是centos 6.4以上系统,默认不装sendmail服务,所以不会有这个目录)。 6 在指定用户下执行相关定时任务这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile,最好在程序脚本中将用到的环境变量重新export下。7生产任务程序不要随意打印输出信息在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果确实需要输出日志,可定向到日志文件里,避免产生系统垃圾。
配置定时任务规范操作过程
①首先要在命令行操作成功,然后复制成功的命令到脚本里,在各个细小环境减少出错的机会。 ②然后测试小本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。 ③先在测试环境下测试,然后正式环境规范部署。 4.生产场景如何调试crond定时任务规范的公司开发和运维人员操作流程:个人的开发配置环境-->办公室的测试环境-->idc机房的测试环境-->idc机房的正式环境。4.1增加执行频率调试任务在调试时,把任务执行频率调快一点,看能不能正常执行,如果正常,那就没问题了,再改成需要的任务的执行时间。 注意:有些任务时不允许频繁执行的,例如:定时往数据库里插入数据,这样的任务要在测试机上测试好,然后正式线上出问题的机会就少了。4.2调整系统时间调试任务用正确的执行任务的时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前几分钟来测试(或者重启定时任务服务)4.3通过日志输出调试定时任务在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容的结果,看是否正确执行。4.4注意一些任务命令带来的问题注意: * * * * * echo "==">>/tmp/lee.log >/dev/null 2>&1 这里隐藏的无法正确执行的任务配置,原因是前面多了>>,或者去掉结尾的 >/dev/null 2>&1。4.5 注意环境变量导致的定时任务故障例如:在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。4.6通过定时任务日志调试定时任务 [root@angelT ~]# tail -f /var/log/cron Mar 26 15:55:01 angelT CROND[3415]: (ida) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1) Mar 26 15:55:01 angelT CROND[3416]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1) Mar 26 16:00:01 angelT CROND[3422]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1) Mar 26 16:00:01 angelT CROND[3423]: (root) CMD (/usr/lib64/sa/sa1 1 1) 编辑定时文件 [root@wen data]# crontab -e ##first crontab */1 * * * * /bin/date >> /data/date.log no crontab for root - using an empty one crontab: installing new crontab查看定时文件 [root@wen data]# crontab -l ##first crontab */1 * * * * /bin/date >> /data/date.log 配置文件所在地,对应文件名与登录的用户名一致 [root@wen cron]# ll /var/spool/cron total 4 -rw------- 1 root root 57 Oct 19 15:32 root查看文件 [root@wen data]# tail -f date.log Thu Oct 19 15:07:34 CST 2017 Thu Oct 19 15:09:01 CST 2017 Thu Oct 19 15:10:01 CST 2017 Thu Oct 19 15:11:01 CST 2017 Thu Oct 19 15:12:01 CST 2017删除定时任务 [root@wen data]# crontab -r [root@wen data]# crontab -l no crontab for root
参考内容http://oldboy.blog.51cto.com/2561410/1410555
转载于:https://www.cnblogs.com/wenyule/articles/7694177.html
linux 定时任务crond相关推荐
- linux定时任务Crond生产规范案例精讲09
linux定时任务Crond生产规范案例精讲09说明:本文来自老男孩linux运维实战培训-就业课程视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto.co ...
- linux 定时任务 crond 服务介绍
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- linux未被识别crond服务,linux 定时任务 crond 服务介绍
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- linux查看定时服务,linux 定时任务 crond 服务介绍
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- Linux服务项目实例,linux 定时任务 crond 服务应用指南(项目实例)
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- linux定时任务crond那些事!
来自老男孩教育的运维班面授课程内容,17期依良同学作业整理而得! 1.定时任务crond介绍 1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特 ...
- Linux定时任务crond服务
一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...
- linux定时任务crond
本文内容是基于CentOS 6.5,如果是其它版本(如:CenOS 7.0),命令可能会有区别. [root@localhost ~]# cat /etc/redhat-release CentOS ...
- linux定时任务Crond基础概念原理介绍01
说明:本文来自老男孩linux运维实战培训-就业课程视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto.com/2561410/1120636 1)视频实战 ...
最新文章
- 华为聚焦AI基础平台,加速行业智能化落地
- P3178 [HAOI2015]树上操作
- C++语言 如何用G++进行编译和运行程序
- 《网管员必读——网络组建》(第2版)导读
- 机器学习实战(MachineLearinginAction) 第二章 k-近邻算法
- python简单爬虫代码-用Python编写一个简单的爬虫
- BGP十三条选路原则
- centos7只安装mysql客户端
- 三大框架SSM基础知识点
- 学习笔记(4):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-深度学习“四件套”:数据、模型、损失函数与优化器...
- 联想如何打开计算机配置,联想电脑如何进入BIOS以及设置启动菜单
- android 高德地图全套,android快速集成高德地图
- Pandas数据可视化怎么做?用实战案例告诉你!
- GTD管理自己的时间
- 在线播放ppt html5,强大的HTML5幻灯片系统:H5Slides
- 购物系统-网上书店 javaweb jsp+Servelt+JDBC连接数据库(源码分享)
- Redis集群原理与容器化部署集群
- SOLIDWORKS建立参数化模型基本原则
- Modelsim独立仿真
- 神级程序员都在用什么工具?